1. 程式人生 > Android開發 >iOS逆向 | 如何通過LLDB實現動態除錯

iOS逆向 | 如何通過LLDB實現動態除錯

Xcode動態除錯的原理

Xcode動態除錯的原理,涉及到兩個工具,LLDB以及debugserver。 debugserver一開始存放在 Xcode裡面,當 Xcode識別到手機裝置時,Xcode會自動將 debugserver安裝到 iphone上,然後通過LLDB與debugserver的互動,來實現真機動態調式。

如何做到動態除錯任意APP

手動給任意APP增加debugserver,使用終端的LLDB與之互動。

實現流程

1.連線越獄的手機。

2.使用iFunBox在/Developer/usr/bin的目錄下找到debugserver,拖到桌面。

3.開啟終端,進入桌面路徑,使用以下命令匯出許可權。

ldid -e debugserver > debugserver.entitlements
複製程式碼

4.使用Xcode開啟debugserver.entitlements,增加兩條新的許可權。

get-task-allow
task_for_pid-allow
複製程式碼

image.png
5.新增許可權後,需要使用以下命令重新簽名,然後將已經簽好許可權的 debugserver放到/usr/bin目錄,便於找到 debugserver指令。

ldid -Sdebugserver.entitlements debugserver
複製程式碼

6.登入到手機root環境,通過以下指令,讓 debugserverp附加到某個APP程式,埠號自定義,程式是監聽APP的程式ID或名稱。

debugserver *:埠號 -a 程式
複製程式碼

7.新開一個終端視窗,啟動LLDB,遠端連線 iphone上的 debugserver。

// 輸入lldb,啟動lldb
lldb
// 遠端連線debugserver
process connect connect://手機IP地址:埠號
複製程式碼

8.連線成功後,監聽的APP屬於斷點狀態,使用LLDB的C命令可以讓程式繼續執行。

補充說明

1.預設情況下/ Developer/usr/bin/ debugservert缺少ー定的許可權,只能除錯通過 Xcode安裝的APP,無法除錯其他APP,如果希望除錯其他APP,需要對 debugserverg重新簽名。

2.配置過程中,我遇到的問題已寫入<iOS逆向 | 動態除錯常見問題>一文中,請自行翻閱。