iOS逆向开发之LLDB调试

前言

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

1、常用命令

  • 添加断点(C语言)
$ breakpoint set -n XXXX(方法名)
set 是子命令
-n 是选项 是--name 的缩写!

成功之后如图:


屏幕快照.png

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

  • 添加断点(OC)
$ breakpoint set -n "-[ViewController save:]" -n "-[ViewController pause:]"  可以同时添加多个断点
  • 查看断点列表
$ breakpoint list 
  • 删除
$ breakpoint delete 组号
  • 禁用/启用
$ breakpoint disable 禁用
$ breakpoint enable  启用
  • 遍历整个项目中满足Game:这个字符的所有方法
$ 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 让你在每次stop的时候去执行一些命令,只对breadpoint,watchpoint
  • 在每次stop的时候执行一些命令
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

你可能感兴趣的:(iOS逆向开发之LLDB调试)