iOS 11.4 lldb越獄調(diào)試之旅

非完美越獄手機(jī),嘗試所有方法仍不成功后可以重啟手機(jī)嘗試,我也不知道為啥,但是重啟后就能成功~~

1.越獄手機(jī)上的目錄 /Developer/usr/bin/debugserver本身就只有arm64架構(gòu),所以直接拷貝到/var/root或者/bin/目錄下,不需要瘦身;

2.給debugserver簽名
執(zhí)行./debugserver *:12345 -a [process name]
遇到 error: failed to attach to process named: "" unable to start the exception thread

兩種方式
一種ldid

ldid -Sent.plist/-Sent.xml debugserver

一種是直接codesign

codesign -s "085C04530D0208CB6A5A99E1C63E6539FED37339" --entitlements ent.plist -f debugserver

-s后面跟的一串是證書標(biāo)記的信息,通過下面命令可以獲得

security find-identity -v -p codesigning

也可以用后面那部分可讀的信息,證書類型+名字("iPhone Developer: XXXXXX (9UB92*****)"),只要能區(qū)分出keychain里的不同證書就好。

然而失敗了,scp命令拷貝到手機(jī)/usr/bin目錄下,執(zhí)行得到killed:9

然后搜索說ent.plist 不完全的,因此找了一份頗為完全的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.backboardd.debugapplications</key>
<true/>
<key>com.apple.backboardd.launchapplications</key>
<true/>
<key>com.apple.diagnosticd.diagnostic</key>
<true/>
<key>com.apple.frontboard.debugapplications</key>
<true/>
<key>com.apple.frontboard.launchapplications</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>com.apple.system-task-ports</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>platform-application</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
<key>com.apple.private.skip-library-validation</key>
<true/>
<key>com.apple.private.security.no-container</key>
<true/>
</dict>
</plist>

嘗試用codesign簽名后仍然失敗,懷疑證書權(quán)限這些信息是不是沒有簽上去

 codesign -vv -d debugserver

用上面查看二進(jìn)制文件或.app文件的證書信息,發(fā)現(xiàn)簽成功了

ldid -e debugserver 

ent.plist所包含的各種權(quán)限也都有

可執(zhí)行權(quán)限 chmod +x 和 chmod 777都嘗試了一遍還是不行
看到有說用這個(gè)可以的

/usr/bin/ldid -P -K/usr/share/jailbreak/signcert.p12 -Sent.plist -M /Applications/test12.app/test12

其實(shí)這條命令跟codesign+證書簽名應(yīng)該是一樣的,所以這應(yīng)該不是原因

最后再一篇文章里發(fā)現(xiàn)發(fā)現(xiàn)說要重啟手機(jī),我最開始想這是不是有點(diǎn)傻,之前做過都沒有說要重啟手機(jī)的,而且11.4是非完美越獄,重啟后我就得再越獄一遍,太麻煩了,但是嘗試了各種方法無果后想著死馬當(dāng)活馬醫(yī)吧,所以還是重啟了

然后發(fā)現(xiàn)重啟后竟然就可以了,一把心酸淚~

3.lldb使用
1)先轉(zhuǎn)發(fā)端口

./tcpreplay.py -t 12345:12345

2)在越獄手機(jī)上監(jiān)聽端口

debugserver 127.0.0.1:12345 -a "程序名(ps -e獲得)"

最開始指定IP地址時(shí)用的localhost:12345有問題,rejecting incoming connection from ::ffff:127.0.0.1 搜索說是最好具體指定換成了127.0.0.1

3)在mac終端輸入lldb,再輸入

process connect connect://127.0.0.1:12345

這命令有點(diǎn)耗時(shí),可能出現(xiàn)python錯(cuò)誤(ImportError: cannot import name _remove_dead_weakref),在當(dāng)前終端輸入export PATH=/usr/bin:$PATH 切回系統(tǒng)自帶python即可

4)終于連上了,就可以像在Xcode一樣lldb調(diào)試了,只是在設(shè)置斷點(diǎn)后發(fā)現(xiàn)程序拋出異常跑步下去了~~

搜索了下lldb忽略異常的方法,發(fā)現(xiàn)要 修改debugserver的代碼,感覺有點(diǎn)復(fù)雜,暫時(shí)放棄了。

唉,其實(shí)MonkeyDev進(jìn)行l(wèi)ldb調(diào)試是很好用的,只是這個(gè)會(huì)修改二進(jìn)制文件,為了查看從appstore下載的app原生態(tài)的信息準(zhǔn)備lldb直接調(diào),發(fā)現(xiàn)還是問題多多,后續(xù)查看是否有其它解決辦法吧~

最后我發(fā)現(xiàn)把問題問清楚后答案就出來了~

參考文章:
[iOS調(diào)試進(jìn)階]讓lldb在遇到EXC_BAD_ACCESS之后能繼續(xù)執(zhí)行進(jìn)入signal_handle

iOS12 下配置debugserver + lldb調(diào)試環(huán)境的小技巧和問題處理

解決 iOS 12.4 Killed: 9 的問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容