古詩詞大全網 - 個性簽名 - iOS 越獄環境debugserver

iOS 越獄環境debugserver

在越獄環境中我們可以很方便的使用 cycript 和 reveal 來調試應用,但是有個問題是他們都不影響進程,沒有辦法下斷點調試。 reveal 主要的是界面調試,有時候我們需要 lldb 進行邏輯調試。

在 xcode 的 debug 中有個 Attach to Process 附加進程:

變成 Running 後就附加上了,可以直接斷點調試了:

並且可以 view debug :

Xcode 中的 lldb 可以調試手機中的應用,是因為手機中的 debugserver 開啟的相關服務。所以在越獄環境中我們只需要開啟 debugserver 服務就可以利用 LLDB 遠程調試三方應用了。

mac 在 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 目錄中能夠看到不同 iOS 系統版本對應的的鏡像文件:

打開 dmg 文件,進入 usr/bin 目錄可以看到 debugserver 。這就是 xcode 安裝到手機中的文件:

當 xcode 第壹次連接手機的時候就會將 debugserver 安裝到手機。

具體安裝在手機的 /Developer/usr/bin/ 目錄中:

將手機中的 debugserver 拷貝出來與 mac 上的進行 md5 驗證

md5 壹致驗證確認。

由於 debugserver 權限問題 debugserver 默認只能附加 Xcode 安裝的程序。需要對其進行重簽名來附加其它程序。當出現 Failed to get connection from a remote gdb process 的時候壹般都是權限的問題。

對 debugserver 重簽使用的是 ldid 工具 (需要安裝), ldid 具體功能可以直接在電腦終端輸入 ldid 查看:

拷貝 Xcode 中和手機版本對應的 debugserver 導出權限文件(我這裏是 iOS14 ):

完整內容與自己的統版本有關,這裏是 iOS14.0 ,?是 arm64 和 arm64e 兩個架構的:

修改好後好後進行重簽名( -S 後面沒有空格):

ldid -S權限文件 debugserver文件

如果妳想用重簽名後的 debugserver 替換 /Developer/usr/bin 目錄下的 debugserver 那麽妳想多了。這個目錄我們沒有修改權限(只讀目錄)。

那麽我們直接將重新簽名後的 debugserver 放入 /usr/bin/ 目錄中:

至此手機端的 debugserver 就已經配置好了。

在開啟手機端 debugserver 前,我們先在端口映射處加壹個映射:

同時映射兩個端口, iproxy 和 python腳本 都可以。

進入 /usr/bin/ 目錄輸入 ./debugserver 就可以看都有哪些功能了:

可以看到我們可以通過進程id和名字開啟:

debugserver 主機地址:端口號 –a 應用進程

手機端先開啟 debug server :

進入監聽狀態。

在 mac 終端直接輸入 lldb 回車進入 lldb 環境,然後連接:

process connect connect://IP:端口

連接需要等幾秒鐘。出現 Target stopped 就連接成功了,可以直接輸入命令調試了。

參考

/t/ios12-debugserver-lldb/14429