一、配置 debugserver
- 两个都已配置可以直接进入第三步
-
Xcode中debugserver的位置:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/14.4
,此处需要将 14.4 修改为与你手机系统版本相同; -
双击
DeveloperDiskImage.dmg
查看debugserver
位置:/usr/bin/debugserver
。 -
找到该文件后,后面就需要将处理一下,拷贝到手机目录中;
-
通过 Xcode 创建一个
sample.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.springboard.debugapplications</key>
<true/>
<key>run-unsigned-code</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
</dict>
</plist>
- 保存后将
debugserver
重签名,codesign -s - --entitlements en.plist -f debugserver
; - 输入此命令给
debugserver
瘦身,此处需要将arm64
修改为你当前手机的cpu架构,lipo -thin arm64 debugserver -output debugserver
; - 将
debugserver
拷贝到手机中,scp -r -P2222 /Users/xx/Desktop/debugserver root@localhost:/usr/bin/
,将/Users/xx/Desktop/debugserver
替换为自己电脑中的debugserver
路径,这里需要将手机用 usb 与电脑连接。
二、安装xia0LLDB
- 在终端执行命令,
git clone https://github.com/4ch12dy/xia0LLDB.git && cd xia0LLDB && ./install.sh
。
三、调试步骤
- 注意需要全程将手机用USB连接电脑, wifi 调试太慢。
-
首先开一个终端进行两个端口转发:
iproxy 2222 22
和iproxy 1234 1111
(将iPhone的1111端口映射到Mac的1234端口),如下图状态为成功状态; -
第二个终端输入
ssh -p 2222 root@localhost
(默认密码为alpine
),直接通过以下命令启动已砸壳或第三方APP:debugserver localhost:1111 -x backboard [app路径]
,(第三方APP需要先启动 APP,然后通过ps -A
命令查看APP名字,通过cd /usr/bin && ./debugserver 127.0.0.1:1111 -a "[App名字]"
执行); -
已砸壳的APP 将自动运行,此时在第三个终端输入
lldb
,等lldb启动后,输入命令连接:process connect connect://localhost:1234
;
- 至此调试连接成功,先后执行
croc
debugme
c
命令,开始调试。
另附常用 lldb 命令
// 查看地址
image list -o -f
// 查看类内地址
po [className _shortMethodDescription]
// 设置断点
br s -a 0x452C96
// 删除所有断点
br del
// 禁用第3个断点(启用en)
br dis 3
-c 用来设置断点条件
-o 来设置单次断点