一般動態(tài)調(diào)試app時,都是在終端里用lldb直接調(diào)試抖所,但是用Xcode的Attach to Process
也可以連接到真機(jī)上的進(jìn)程進(jìn)行調(diào)試渣慕。但是只能調(diào)試用自己的證書簽名的app椿肩。
在Xcode上調(diào)試的優(yōu)點(diǎn):
- 有UI界面袄简,查看堆棧更直接,可以用Xcode打斷點(diǎn)蜀铲。
- 可以使用
debug gauges
里的Disk和Network等工具边琉。 - 輸入lldb命令時有自動補(bǔ)全。
- 可以使用Xcode的
Debug UI Hierarchy
功能记劝,直接查看app的界面布局艺骂。 - 可以使用Xcode的
Debug Memory Graph
功能,查看當(dāng)前內(nèi)存中存在的所有對象隆夯,以及對象之間的引用關(guān)系钳恕。
步驟如下。
1.重簽名需要逆向的app
重簽名后才能用Xcode attach蹄衷。而重簽名前需要對app進(jìn)行砸殼忧额。這些步驟就不再重復(fù)了。
額外說一句愧口,在砸殼后建議進(jìn)行一下恢復(fù)符號表的操作睦番。恢復(fù)符號表后耍属,在調(diào)試時就能直接在堆棧中看到方法名托嚣,免去了計(jì)算偏移量然后在hopper里查找的麻煩。參考:iOS符號表恢復(fù)&逆向支付寶, restore-symbol厚骗。
2.Attach to Process
重簽名后安裝到越獄設(shè)備上示启,啟動app,在Xcode中隨便打開一個工程领舰,選擇越獄設(shè)備夫嗓,就可以在Debug->Attach to Process
中找到正在運(yùn)行的進(jìn)程名和進(jìn)程id,點(diǎn)擊后就會開始連接冲秽。大概過1分鐘就會連接上舍咖。
3.查看UI
連接上后,就可以點(diǎn)擊使用Xcode的Debug UI Hierarchy
來查看界面布局:
注意锉桑,Debug UI Hierarchy
對Xcode版本似乎有要求排霉,在調(diào)試重簽名app時,Xcode8.3.2可以民轴,而Xcode8.2就沒有這個功能按鈕攻柠。
4.查看內(nèi)存信息
點(diǎn)擊Debug Memory Graph
按鈕球订,可以查看當(dāng)前內(nèi)存中存在的數(shù)據(jù)。打印地址辙诞,查看引用關(guān)系辙售,可以配合malloc stack
進(jìn)行追蹤轻抱。如果打開了malloc stack
飞涂,就可以直接在右邊顯示這個對象的創(chuàng)建堆棧。開啟方法參考:iOS逆向:在任意app上開啟malloc stack追蹤內(nèi)存來源
5.查看正在使用的文件
debug gauges
中的Disk工具可以查看app當(dāng)前打開的文件祈搜。
6.instrument調(diào)試
類似的较店,也可以用instrument調(diào)試重簽名后的app,不過并不是所有工具都可以使用容燕,對逆向的幫助不大梁呈。