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

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

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

三、debugserver的开启与LLDB的连接

1.开启debugserver

在越狱设备中,我们就可以通过下方命令行来开启debugserver了,我们此处以调试微信App为例。下方的命令就是启动debugserver来监听来自任何IP地址的接入,iOS设备的接入端口是12345,所要调试的App为“WeChat”。命令如下:

debugserver *:12345 -a "WeChat"

在我们iOS设备上执行上述命令的效果如下所示,执行完上述命令后,我们的iOS设备就会等待Mac终端LLDB的接入。

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

2.LLDB连接debugserver

LLDB连接debugserver可以使用WIFI进行连接,可是WIFI是不稳定的,而且特别的慢,所以此处我们要使用usbmuxd进行LLDB和debugserver的连接。

(1)进行端口的转发

和第一部分中的内容相同,我们使用usbmuxd进行端口的转发,将上述的“12345”端口对接到Mac本地的某个端口,此处我们使用“12345”端口。进入到usbmuxd-1.0.8目录下的python-client下执行下方的命令。

./tcprelay.py -t 12345:12345

具体操作步骤如下所示:

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

(2)Mac端LLDB的接入

进行端口转发后,接下来我们就开始进入lldb模式,然后进行debugserver的连接了。首先在terminal上输入lldb命令,然后输入下方的地址进行连接。因为我们使用usbmuxd进行了端口的转发,因此可以使用本地的环回测试地址来进行debugserver的连接。

process connect connect://127.0.0.1:12345

下方是连接后的结果,LLDB与debugserver建立完成后,我们就可以使用lldb来调试微信这个应用了。

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

四、Hopper + LLDB

在上篇博客《iOS逆向工程之给WeChat脱壳》 我们已经给微信进行可脱壳处理,所以使用Hopper进行处理是没有问题的。此部分我们就要将Hopper与LLDB结合在一起发挥其双剑合璧的作用。该部分也算是本篇博客中实战的一部分。

1.查看线程中的WeChat

LLDB连接上debugserver后,我们首先使用下方的命令来查看当前进程中的所有模块。从这些输出信息中我们能找到“WeChat”这个进程在虚拟内存相对于模块基地址的偏移量。