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

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

LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具。使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LLDB来调试你自己的App。那么本篇博客中就要使用LLDB来调试从AppStore下载安装的App,并且结合着Hopper来分析第三方App内部的结构。LLDB与Hopper的结合,会让你看到不一样的东西,本篇博客就会和你一起领略LLDB与Hopper的魅力。

一、SSH的USB连接--usbmuxd

之前我们ssh连接iOS设备是通过局域网也就是WiFi来连接的,当网络环境不好的时候输入个命令行都卡,所以我们需要一种更快的访问iOS设备的方式,那就是使用USB连接了。本篇博客中无论是SSH连接iOS设备还是LLDB连接iOS设备,我们都使用USB的方式进行设备的访问,这样速度就快的不行不行的了。本篇博客的第一部分就是介绍如何使用USB进行设备的SSH连接,这部分也是本篇博客的基础,不过内容还算是简单。

1、获取usbmuxd

usbmuxd虽然目前最新的版本是1.1.0,但是1.1.0版本和1.0.9版本仅支持Linux系统,也就是说我们的Mac还是得下载v1.0.8的版本,下载地址(usbmuxd-v1.0.8)。下载完后,将下载的文件进行解压,内容如下所示:

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

2.使用usbmuxd连接iOS越狱设备(1) 使用usbmuxd转发接口

切换到上述文件夹下的python-client目录下,执行下方的命令,将iOS上的22端口转发到当前设备的2221端口,如下所示。

./tcprelay.py -t 22:2221

下方是执行上述命令的结果:

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

(2) 使用ssh连接到越狱设备

ssh root@localhost -p 2222

上述命令就是ssh连接的命令 -p后边紧跟的是上述转发的端口,执行上述命令后,结果如下:

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

使用usbmuxd就可以通过USB来连接我们的iOS越狱设备了,下方的LLDB连接iOS设备也是通过USB连接的。具体请看下文。

二、配置debugserver

在做iOS开发时,在Mac上输入LLDB的命令就可以控制iOS端的App,是因为在我们iOS客户端中有一个debugserver服务器。debugserver专门用来连接Mac端的LLDB客户端,接收LLDB所提供的命令,并且进行相应的执行。如果你的iOS设备进行过真机调试的话,设备中就会被安装上debugserver, 不过该debugserver只能用来调试你自己的相关应用。如果想要调试从AppStore中获取的App的话,那么我们需要对iOS设备上的debugserver进行处理。该部分就是要处理我们的debugserver。