iOS逆向工程(6)LLDB调试 的简单使用与介绍

一、LLDB简介

LLDB全称 " Low Level Debugger ", 是由苹果出品,默认内置于Xcode中的动态调试工具,不但通吃C、C++、Objective-C ,还全盘支持OSX、iOS、以及iOS模拟器。

二、LLDB功能概括

  • 在指定的条件下启动程序;
  • 在指定的条件下停止程序;
  • 在程序停止的时候检查程序内部发生的事;
  • 在程序停止的时候对程序进行改动,观察程序执行过程有什么变化;

三、debugserver工具

需要有一点说明,LLDB是运行在OSX中的,要想调试iOS,还需要另一个工具的配合,它就是debugserver。

debugserver的作用就是它作为服务端,实际执行LLDB(客户端)传过来的命令,再把结果反馈给LLDB,然后显示给用户。

iOS设备上并没有安装debugserver,只有设备链接过一次xcode,并在Window ---- device菜单中添加此设备后,debugserver就会出现iOS设备/Developer/user/bin/目录下。

默认通过Xcode安装的debugserver只能调试我们自己的APP,因为缺少task_for_pic权限(这个权限好像是和读取进程id,端口等相关的权限),所以我们可以手动给debugserver添加权限。

四、debugserver配置

1)记下设备对应ARM处理器指令集:

iOS逆向工程(6)LLDB调试 的简单使用与介绍_第1张图片

2)debugserver减肥:
(1)先将未经过处理的debugserver从iOS拷贝到OSX中随便一个目录中,比如~/debugserver。

(2)使用命令进行减肥处理(这一步感觉应该也是可以省略的)

lipo -thin armv7 ~/debugserver -output ~/debugserver

(3)添加task_for_pid 权限
下载http://iosre.com/ent.xml 到 "/Users/zhangdasen/"
(注意替换自己的用户名)

/opt/theos/bin/ldid -Sent.xml debugserver

(4)拷贝回iOS

scp ~/debugserver [email protected]:/usr/bin/debugserver

(5)添加文件权限

ssh [email protected]
chmod +x /usr/bin/debugserver

3)演示命令步骤:

iOS逆向工程(6)LLDB调试 的简单使用与介绍_第2张图片

五、用debugserver启动或附加进程
1,附加进程

用到的命令:
debugserver *:1234 -a "SpringBoard"

process connect connect://10.10.245.208:1234

1234            是 自己写的端口号
SpringBoard     是 需要附加的进程
10.10.245.208   是 设备的IP

下图进行演示:



2,启动进程
启动进程和附加进程操作差不多,就不进行GIF演示了,命令如下

debugserver -x backboard *:1234 /Applications/Maps.app/Maps

process connect connect://10.10.245.208:1234

/Applications/Maps.app/Maps 这个为要启动调试的App的路径

五、LLDB 一些命令

设置断点:    br s -a 0XCC730
禁用所有断点: br dis
禁用某个断点: br dis 6
启用所有断点: br en
启用某个断点:  br en 6
删除所有断点: br del
删除某个断点:  br del 6

这篇文章只简单做了对 LLDB 在逆向中的简单介绍和配置使用,LLDB在使用中还有很多知识,没有介绍到,比如动态打断点、调试等使用方法,可能会在以后的文章中介绍到。
参考书籍:

下一篇:iOS逆向工程(7)iOS越狱开发之配置SSH免密码连接iPhone

你可能感兴趣的:(iOS逆向工程(6)LLDB调试 的简单使用与介绍)