iOS逆向工程使用LLDB的USB连接调试第三方App

2020-01-17 22:08:35王旭

1.获取debugserver

首先我们得找到iOS设备中debugserver,并将其拷贝到Mac上进行处理,下方就是位于/Developer/usr/bin目录下的debugserver。此debugserver只支持调试我们自己的App, 如果需要调试其他人的App的话,需要对此debugserver进行处理,处理过程见下文。

iOS,LLDB,USB连接调试第三方App,LLDB微信登录添加断点

2.对debugserver进行瘦身

lipo -thin arm64 debugserver -output debugserver

进入到到Mac中debugserver所在的目录下执行上述命令即可,-thin后方填写你的测试机相应的ARM架构即可,因为我的测试机是iPhone 6 Plus, 是arm64的架构,所以此处填的参数是arm64, 如果你的是iPhone5的设备,那么就是armv7s了。

3.给debugserver添加task_for_pid权限

给debugserver添加task_for_pid权限后,我们就可以使用LLDB调试其他App了。此部分我们需要一个存储配置信息的xml文件,该文件的内容如下。你可以将下下方的文本进行拷贝,然后存储成ent.xml即可。


<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.easck.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>

在给debugserver符权限时,我们需要使用到ldid命令,如果你的Mac上没有安装ldid命令,那么请用brew进行install。执行下方的命令行就可以给我们的debugserver赋上task_for_pid权限。需要注意的是-S与ent.xml文件名中是没有空格的。

ldid -Sent.xml debugserver

下方截图就是我们处理debugserver的步骤,如下所示:

iOS,LLDB,USB连接调试第三方App,LLDB微信登录添加断点

4、将debugserver拷贝到iOS设备中

最后一步就是将处理好的debugserver拷贝到我们的越狱设备中,并且给debugserver赋上可执行的权限。因为/Developer/usr/bin目录下的debugserver是只读的,所以你不能将处理好的debugserver拷贝到上述文件,你要将处理好的debugserver拷贝到/usr/bin/目录下(当然此处我们借助IFunBox进行文件的拷贝)。

将debugserver拷贝到/usr/bin目录下后,执行下方的赋权限的命令,将可执行的权限赋给debugserver,如下所示:

chmod +x debugserver

赋完权限后,你就可以使用debugserver命令来开启debuserver了,如下所示: