lldb: 调试工具. 支持OSX, iOS, 以及iOS模拟器
debugserver:
- 配置debugserver
- 将未经处理的debugserver从iOS拷贝到OSX中
scp root@192.168.2.3:/Developer/usr/bin/debugserver ~/Desktop/debugserver/debugserver
- 减肥( "arm64" 换成你设备所对应的ARM)
lipo -thin arm64 debugserver -output debugserver
- 给debugserver添加task_for_pid权限
方案一:
下载"http://iosre.com/ent.xml" 到OSX 然后运行如下命令:
ldid -Sent.xml debugserver
方案二:
下载"http://iosre.com/ent.plist" 到OSX ,然后运行如下命令:
codesign -s - --entitlements ent.plist -f debugserver
3.将经过处理的debugserver考回iOS,并添加执行权限
scp ~/Desktop/debugserver/debugserver root@192.168.2.3:/usr/bin/debugserver
chmod +x /usr/bin/debugserver
4.用debugserver启动或附加进程
debugserver -x backboard *:1234 /Applications/MobileSMS.app/MobileSMS(开启1234端口,等待任意IP接入)
debugserver 192.168.2.3:1234 -a /Applications/MobileSMS.app/MobileSMS(开启1234端口,等待指定IP接入)
lldb:
1.连接debugserver:
(lldb) process connect://192.168.2.3:1234
2.lldb命令
image list: 用于列举当前进程中的所有模块(image)
image list -o -f: 获取每个模块的起始地址
-
breakpoint:
br function 在函数的起始位置设置断点 br s -a address 在制定地址处设置断点 br dis/en/del 禁用,启用,删除断点
nexti(ni)/stepi(si) 执行下一条机器指令,前者不进入函数体,后者会进入函数体
register write: 给指定的寄存器赋值,从而对程序进行改动,观察程序的执行过程中有什么变化