操作环境:
* 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目录下.
com.apple.springboard.debugapplications
get-task-allow
task_for_pid-allow
run-unsigned-code
用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=
或者:
debugserver *:12345 --attach=
启动应用作为调试进程, 命令如下:
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
稍等片刻,待连上之后,我们就可以开始调试了.