你的位置:首页 > 软件开发 > 操作系统 > iOS逆向工程之使用LLDB的USB连接调试第三方App

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

发布时间:2016-09-21 11:00:10
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具。使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LL ...

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

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

 

2.使用usbmuxd连接iOS越狱设备

(1) 使用usbmuxd转发接口

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

./tcprelay.py -t 22:2221

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

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

 

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

ssh root@localhost -p 2222

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

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

 使用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。

1.获取debugserver

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

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

 

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了。此部分我们需要一个存储配置信息的ent.即可。

<!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>get-task-allow</key>    <true/>    <key>task_for_pid-allow</key>    <true/>    <key>run-unsigned-code</key>    <true/></dict></plist>

原标题:iOS逆向工程之使用LLDB的USB连接调试第三方App

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。