通常動態調試app時,都是在終端裏用lldb直接調試,可是用Xcode的Attach to Process
也能夠鏈接到真機上的進程進行調試。可是隻能調試用本身的證書籤名的app。git
在Xcode上調試的優勢:github
debug gauges
裏的Disk和Network等工具。Debug UI Hierarchy
功能,直接查看app的界面佈局。Debug Memory Graph
功能,查看當前內存中存在的全部對象,以及對象之間的引用關係。步驟以下。markdown
重簽名後才能用Xcode attach。而重簽名前須要對app進行砸殼。這些步驟就再也不重複了。app
額外說一句,在砸殼後建議進行一下恢復符號表的操做。恢復符號表後,在調試時就能直接在堆棧中看到方法名,免去了計算偏移量而後在hopper裏查找的麻煩。參考:iOS符號表恢復&逆向支付寶, restore-symbol。工具
重簽名後安裝到越獄設備上,啓動app,在Xcode中隨便打開一個工程,選擇越獄設備,就能夠在Debug->Attach to Process
中找到正在運行的進程名和進程id,點擊後就會開始鏈接。大概過1分鐘就會鏈接上。oop
鏈接上後,就能夠點擊使用Xcode的Debug UI Hierarchy
來查看界面佈局:佈局
注意,Debug UI Hierarchy
對Xcode版本彷佛有要求,在調試重簽名app時,Xcode8.3.2能夠,而Xcode8.2就沒有這個功能按鈕。post
點擊Debug Memory Graph
按鈕,能夠查看當前內存中存在的數據。打印地址,查看引用關係,能夠配合malloc stack
進行追蹤。若是打開了malloc stack
,就能夠直接在右邊顯示這個對象的建立堆棧。參考:iOS逆向:在任意app上開啓malloc%20stack追蹤內存來源。ui
debug gauges
中的Disk工具能夠查看app當前打開的文件。spa
相似的,也能夠用instrument調試重簽名後的app,不過並非全部工具均可以使用,對逆向的幫助不大。