一般動態除錯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%20stack追蹤記憶體來源。
5.檢視正在使用的檔案
debug gauges
中的Disk工具可以檢視app當前開啟的檔案。
5.instrument除錯
類似的,也可以用instrument除錯重簽名後的app,不過並不是所有工具都可以使用,對逆向的幫助不大。