操作環境:
* iPad mini 2, iOS 9.2 [Jailbroken]
* iMac, OS X EI Capitan
* Xcode 7.3.1
* usbmuxd 1.0.6 [解壓后放在Desktop目錄下]
1. 定制debugServer
- 導出
debugserver
.
在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/9.2/DeveloperDiskImage.dmg
找到 DeveloperDiskImage.dmg
.
雙擊DeveloperDiskImage.dmg
打開它. 在目錄/Volumes/DeveloperDiskImage/usr/bin/
下找到debugserver
.
將debugserver
copy到Desktop目錄下, 命令如下:
cp /Volumes/DeveloperDiskImage/usr/bin/debugserver ~/Desktop/debugserver
- 給
debugserver
簽名.
需要用到內容如下的entitlement.xml, 將其保存到Desktop目錄下.
<!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.springboard.debugapplications</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
<key>run-unsigned-code</key>
<true/>
</dict>
</plist>
用codesign
對debugserver
簽名, 命令如下:
cd ~/Desktop
codesign -s - --entitlements ./entitlement.xml -f debugserver
2. 安裝debugserver
與ARMDisassembler.framework
將簽名后的debugserver
拷貝到iDevice/usr/bin
目錄下, 將ARMDisassembler.framework
拷貝到iDevice目錄/System/Library/PrivateFrameworks
下.
新開一個Terminal tab,執行:
python usbmuxd-1.0.6/python-client/tcprelay.py 22:2222
在原Terminal tab里執行:
scp -P 2222 debugserver root@localhost:/usr/bin/
scp -r -P 2222 /Volumes/DeveloperDiskImage/Library/PrivateFrameworks/ARMDisassembler.framework root@localhost:/System/Library/PrivateFrameworks/
3. 調試應用
- iOS上用
debugserver
attach 進程或啟動應用
Attach 進程, 命令如下:
debugserver *:12345 --attach=<pid>
或者:
debugserver *:12345 --attach=<process name>
啟動應用作為調試進程, 命令如下:
debugserver *:12345 /path/to/app
- OS X 上用LLDB遠程調試
新開一個Terminal tab執行:
python usbmuxd-1.0.6/python-client/tcprelay.py 12345:12345
再新開一個Terminal tab運行lldb
, 輸入以下lldb
命令:
process connect connect://localhost:12345
稍等片刻,待連上之后,我們就可以開始調試了.