iOS逆向开发之LLDB调试

2018-05-17  本文已影响158人  飞虎队132

前言

学习逆向开发,必不可少要调试所逆向的工程,那么LLDB断点调试这个强大的功能是必不可少的,接下来介绍一下LLDB相关常见的功能

1、常用命令

$ breakpoint set -n XXXX(方法名)
set 是子命令
-n 是选项 是--name 的缩写!

成功之后如图:


屏幕快照.png

这里是给test1方法添加了断点,显示了断点的信息,包括断点编号,位置,和内存地址

$ breakpoint set -n "-[ViewController save:]" -n "-[ViewController pause:]"  可以同时添加多个断点
$ breakpoint list 
$ breakpoint delete 组号
$ breakpoint disable 禁用
$ breakpoint enable  启用
$ breakpoint set -r Game:

2、流程控制

$ continue 缩写:c 
$ next 缩写:n
$ s 

常用命令

help
如:help breakpoint

3、高级命令

$ breakpoint set --selector touchesBegan:withEvent:
$ breakpoint set --file ViewController.m --selector touchesBegan:withEvent:

4、设置代码

expression self.view.subviews
expression 简写为p

除了常用的查看代码之外,还可以写代码修改数据,来快速不用编译查看效果,如需写多行代码用control+enter换行

5、添加内存断点(可以类比代码断点)

watchpoint set variable p1->_name
当对象地址发生改变的时候就会断在该内存地址p1是对象,_name是成员变量 

watchpoint set expression 0x000000034f40a45 
内存地址下断点
frame variable 查看内存信息
p &p1->_name 取对象属性地址
break command add xx (xx为断点编号)
显示如下:
Enter your debugger command(s).Type 'DONE' to end 
>po self
>po self.view
>DOWN

break command list xx (xx为断点编号)
stop-hook 只对breakpoint、 watchpoint生效
$ target stop-hook add -o "frame variable" 设置完成之后,当有断点的时候直接执行引号内的指令,每断一次就执行一次(frame variable 表示方法参数)
$ target stop-hook list 查看列表
$ undisplay xxx(编号)去掉某一组hook

6、其他指令

$ image lookup -a 0x10389cd8f 查看某一内存地址对应方法
$ image lookup -t xxxx(类名) 快速查看某一个类  
$ p
$ b -[xxx xxx] 某个类的某个方法加断点
$ x 
$ register read
$ po
上一篇 下一篇

猜你喜欢

热点阅读