iOS逆向:用Xcode直接除錯第三方app

黑超熊貓zuik發表於2019-03-04

一般動態除錯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來檢視介面佈局:

UI Hierarchy

注意,Debug UI Hierarchy對Xcode版本似乎有要求,在除錯重簽名app時,Xcode8.3.2可以,而Xcode8.2就沒有這個功能按鈕。

4.檢視記憶體資訊

點選Debug Memory Graph按鈕,可以檢視當前記憶體中存在的資料。列印地址,檢視引用關係,可以配合malloc stack進行追蹤。如果開啟了malloc stack,就可以直接在右邊顯示這個物件的建立堆疊。參考:iOS逆向:在任意app上開啟malloc%20stack追蹤記憶體來源

Memory Graph

5.檢視正在使用的檔案

debug gauges中的Disk工具可以檢視app當前開啟的檔案。

Open Files

5.instrument除錯

類似的,也可以用instrument除錯重簽名後的app,不過並不是所有工具都可以使用,對逆向的幫助不大。

相關文章