iOS逆向 | 如何通過LLDB實現動態除錯
阿新 • • 發佈:2020-06-24
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
複製程式碼
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逆向 | 動態除錯常見問題>一文中,請自行翻閱。