iOS lldb + debugserver
本文于 921 天之前發表,文章内容可能已經過時。
iOS lldb + debugserver 動態調適
前言
關於 iOS 動態調適有許多方式,這邊介紹一種比較容易的方法,
通過 MacOS 中的 Xcode 自帶的 lldb 與 debugserver 來操作,可以比較便捷的使用,其中也能學習到 lldb 相關的指令,使用於日後正向開發操作上。
在一般開發,使用 Xcode build 至 iphone(實體機) 中,會在手機上創建一個 debugserver,已進行動態調適 (debug),然而在動態分析上,能通過越獄權限的提升,來自主構建 debugserver,依附至欲分析之app上,達成動態分析與調適。
準備
事前準備
- macOS 10.14+
- Xcode 10.3
- iphone iOS 12.4 (JB: unc0ver)
- openSSH (安裝於 iphone 上)
- usbmuxd (安裝於 mac 上)
- iTerm2 (或者其他終端機)
由於 iOS 11 之前需求簽名與添加權限,有些許的難度,但在 iOS 12 之後,不需要再簽名與權限,所以統一使用12.4來操作。
操作
在 iTerm2 上,下指令 iproxy 1111 1111
在 iTerm2 上,開啟第二個分頁(command+T),SSH 連線至手機,
其操作可以讓mac 與 iphone 在同一個 wifi 下,會更好操作。1
ssh root@192.168.111.1
密碼統一預設為: alpine
在 ssh 分頁中下指令:
ps -e
,可以找出當前運行中的 app,比如我們要 attach 的進程編號為 693,我們可以輸入如下命令:debugserver *:1111 -a 693
Chimera 越獄:
1
/Developer/usr/bin/debugserver localhost:1234 -a 693
unc0ver 越獄:
1
debugserver localhost:1234 -a 693
如果要用 debugserver 啓動 app,而不是附加到已經啓動的 app,則使用
debugserver localhost:1111 <app mach-O 路徑>
,例如:1
debugserver localhost:1234 /var/containers/Bundle/Application/107F3307-2900-4720-B9BA-0C7792D89DF2/APP_TO_DEBUG.app/APP_TO_DEBUG
在 iTerm2 上,開啟第第三個分頁,下指令:
lldb
,進入 lldb 界面,使用 process connect 指令連接至手機上。 用 WiFi 連接到 iOS 設備時:process connect connect://localhost:1234
調適
其餘奧秘,就留給大家研究嘗試一下吧~
錯誤
error:failed to get reply to handshake packet
- wget http://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.bz2
- tar xjfv usbmuxd-1.0.8.tar.bz2
- cd usbmuxd-1.0.8/python-clinet/
- python2 tcprelay.py -t 1111:1111
- lldb 連接時輸入 process connect connect://localhost:1111
備註
- usbmuxd 退出: command + C
- ssh 退出: exit
- lldb 退出: exit