一般動態調試app時,都是在終端裏用lldb直接調試,但是用Xcode的Attach to Process
也可以連接到真機上的進程進行調試。但是隻能調試用自己的證書籤名的app。
在Xcode上調試的優點:
- 有UI界面,查看堆棧更直接,可以用Xcode打斷點。
- 可以使用
debug gauges
裏的Disk和Network等工具。 - 輸入lldb命令時有自動補全。
- 可以使用Xcode的
Debug UI Hierarchy
功能,直接查看app的界面佈局。 - 可以使用Xcode的
Debug Memory Graph
功能,查看當前內存中存在的所有對象,以及對象之間的引用關係。
步驟如下。
1.重簽名需要逆向的app
重簽名後才能用Xcode attach。而重簽名前需要對app進行砸殼。這些步驟就不再重複了。
額外說一句,在砸殼後建議進行一下恢復符號表的操作。恢復符號表後,在調試時就能直接在堆棧中看到方法名,免去了計算偏移量然後在hopper裏查找的麻煩。參考:iOS符號表恢復&逆向支付寶, restore-symbol。
2.Attach to Process
重簽名後安裝到越獄設備上,啓動app,在Xcode中隨便打開一個工程,選擇越獄設備,就可以在Debug->Attach to Process
中找到正在運行的進程名和進程id,點擊後就會開始連接。大概過1分鐘就會連接上。
3.查看UI
連接上後,就可以點擊使用Xcode的Debug UI Hierarchy
來查看界面佈局:
注意,Debug UI Hierarchy
對Xcode版本似乎有要求,在調試重簽名app時,Xcode8.3.2可以,而Xcode8.2就沒有這個功能按鈕。
4.查看內存信息
點擊Debug Memory Graph
按鈕,可以查看當前內存中存在的數據。打印地址,查看引用關係,可以配合malloc stack
進行追蹤。如果打開了malloc stack
,就可以直接在右邊顯示這個對象的創建堆棧。開啓方法參考:iOS逆向:在任意app上開啓malloc stack追蹤內存來源
5.查看正在使用的文件
debug gauges
中的Disk工具可以查看app當前打開的文件。
6.instrument調試
類似的,也可以用instrument調試重簽名後的app,不過並不是所有工具都可以使用,對逆向的幫助不大。