iOS 逆向中 LLDB调试 的简单使用与介绍
2016-06-15 本文已影响2368人
ForestSen
一、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处理器指令集:
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 root@10.10.245.208:/usr/bin/debugserver
(5)添加文件权限
ssh root@10.10.245.208
chmod +x /usr/bin/debugserver
3)演示命令步骤:
五、用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应用逆向工程-第2版>