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

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

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

接下来我们要做的事情就是,在比较寄存器r0和r1中的值时我们要改变r1寄存器中的值,然后观察App的运行效果。下方这个截图是随便输入手机号和密码时所提示的内容。也就是正常的流程会弹出下方的框。

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

接下来我们要做的就是给0x1063a24 + 0x5b000 = 0x10BEA24 (cmp)这个内存地址添加断点,然后去修改寄存器r1的值。下方截图就是给0x10BEA24这个内存址添加了断点,并且在输入手机号和密码后,点击登录会执行我们添加的断点,如下所示。在断点出我们清楚的看到了cmp r0, r1这行ARM指令。

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

接下来我们先将r0和r1中的值进行打印,$r0 = 8, $r1 = 351。然后我们将$r1中的值改成8,然后输入c继续执行,发现之前正常流程的alter就不会弹出来了,而是重新进行了一次网络请求。

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

上述示例都是在32位系统上做的,如果你使用的是arm64架构的设备,如iPhone6Plus,那么你的地址会比上述地址要长一倍。下方两个截图是使用iPhone 6 Plus越狱设备做实验的截图,可以和上述步骤进行一下对比,虽然有所不同,但是上述内容在调试下方内容时也是适用的。

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

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

本篇博客的内容就到这儿吧,至此,你应该能将LLDB与Hopper结合起来使用了吧。今天我们以“微信”为例子,并没有别的意思,只是想在真正的实例中实现一下。使用微信做实验的原因就是微信做的足够安全,毕竟微信的团队还是很强大的。因为用我的越狱设备做完上述实验后,该越狱设备已经不能登录微信账号了,肯定是微信的后台监测到该“越狱设备”的异常行为了,从而做了一些安全措施。