準(zhǔn)備環(huán)境:
Xcode 11.4.1
iOS 12.4.5 越獄設(shè)備
基本上參考了以下文章:
3.?iOS逆向?qū)W習(xí)筆記之--LLDB動(dòng)態(tài)調(diào)試目標(biāo)程序
4.?iOS12 下配置debugserver + lldb調(diào)試環(huán)境的小技巧和問題處理
5.?一步一步用debugserver + lldb代替gdb進(jìn)行動(dòng)態(tài)調(diào)試?
//http://www.360doc.com/content/17/0510/11/12278201_652654333.shtml?補(bǔ)充5的圖
配置過程
debugserver是根據(jù)iOS版本走的,最近升級到了12.4.5暂刘,以前的debugserver就作廢了,要重新配置一下。
一凸主、debugserver準(zhǔn)備
主要工作是對debugserver進(jìn)行精簡+賦權(quán)滔以。
1. 獲取debugserver。將手機(jī)連接電腦逻恐,打開Xcode因悲,選擇Window->Devices and Simulators堕汞,然后就能在iOS系統(tǒng)的Developer/usr/bin目錄中看到debugserver。
這步也可以直接在電腦上找xcode對應(yīng)版本的debugserver晃琳,路徑:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
2. 執(zhí)行scp命令將debugserver下載到電腦上讯检。
$ iproxy 2222 22
$?scp -P 2222 root@127.0.0.1:/Developer/usr/bin/debugserver ./
3. 精簡debugserver。先參考文章1卫旱,得知目標(biāo)iOS設(shè)備cpu架構(gòu)為arm64人灼。執(zhí)行:
$ lipo -thin arm64 ~/desktop/debugserver -output ~/debugserver
//這里兩個(gè)debugserver似乎不能在同一個(gè)文件夾,因此我把新輸出的文件放到~目錄下了顾翼。
4. 給debugServer添加task_for_pid權(quán)限投放。
首先下載配置文件(http://iosre.com/ent.plist,自己寫一個(gè)也可以)适贸,執(zhí)行:
$ codesign -s - --entitlements ent.plist -f debugserver
//備用方案 ldid -S ent.plist?debugserver
驗(yàn)證:
$ ldid -e? debugserver
顯示ent.plist的內(nèi)容說明成功灸芳。
5. 將處理好的debugserver拷貝回越獄iOS設(shè)備
$ iproxy 2222 22
$ scp -P 2222 debugserver root@127.0.0.1:/usr/bin/debugserver
scp -P 2222 debugserver root@127.0.0.1:/usr/bin/debugserver拷貝到"/usr/bin/"目錄下具有全局使用權(quán)限,原有目錄下/Developer/usr/bin/debugserver保留拜姿。
二烙样、lldb連接debugserver
調(diào)試時(shí),需要在移動(dòng)端啟用debugserver蕊肥,在mac使用lldb連接debugserver谒获。
1. 在iOS上啟動(dòng)debugserver
上一步已經(jīng)將新的debugserver拷到/usr/bin/目錄下,這里可以直接在iOS端的終端里使用了:
$ frida-ps -U ? ? ? //獲取進(jìn)程名壁却,ps -ef也行
# debugserver *:9999 -a Cydia? ? ? ?//9999為監(jiān)聽的端口號
2. macOS上啟動(dòng)lldb
情況1?
你的macOS和已經(jīng)越獄的iOS在同一個(gè)網(wǎng)段批狱,客戶端(debugserver)和服務(wù)端(lldb)能夠直接連通:
$ lldb
?(lldb) process connect connect://(iOS的IP):9999
報(bào)錯(cuò)處理
其中出現(xiàn)了lldb報(bào)錯(cuò)信息:error:failed to get reply to handshake packet
這個(gè)使用usb連接解決:
# debugserver 127.0.0.1:1234 -a XXXX ? ? ? //這個(gè)名稱我是用filza在container里翻出來的,取XXXX.app的文件名展东。
$ iproxy 1234 1234
(lldb) process connect connect://127.0.0.1:1234
成功的圖參考《iOS應(yīng)用逆向與安全》P130(還是要好好看書芭饬颉)。
使用lldb為下一步脫殼做準(zhǔn)備琅锻。
另外可以參考文章4提到的一鍵腳本配置debugserver卦停。