逆向LLDB(三)

LLDB (Low Lever Debug)

常用指令

  • help breakpoint 产看breakpoint指令
  • breakpoint set -n funcRun   (-n是-name,  funcRun是方法名字) (简写 b funcRun)
  • breakpoint set -n “-[ViewController run]” -n “-[ViewController eat:]”   设置多个断点
  • breakpoint set –selector touchesBegan:withEvent:  断点所以得方法和类无光
  • breakpoint set –file ViewController.m  –selector touchesBegan:withEvent:   在指定文件中设置断点
  • breakpoint set -r Run:  遍历满足整个项目中符合Run:这个字符的所以方法
  • breakpoint list 断点的list
  • breakpoint disable 2.1  禁用2.1处断点(也就是funcRun处断点)
  • breakpoint enable 2.1  启用2.1处断点
  • breakpoint delete 2  删除一组断点 (删除一个是禁用,只有删除一组才可以删除)
  • breakpoint delete  全部删除
  • p 就是expression简写
  • poexpression -O
  • expression 断点修改…  (p (Animal *)self.cat    得到$2 然后再去设置$2.run 才能执行) (control+return 多行)
  • memory read 0x32…..  读内存地址 也可以用 x 0x32…
  • x/数量格式字节数 内存地址  格式:x是16进制,f是浮点,d是10进制。字节大小:b:byte 1字节,h:half word 2字节 w:word 4字节,g:giant word 8字节)
  • memory write 0x102a821 8  (0x102a820:  22 07 00 00 00 00,其中0x102a821是07,2位一个字节)
  • register read x1  读寄存器

  • up 查看堆栈上一个调用的函数
  • thread return  回滚堆栈上一个调用的函数 (再c执行就结束了 不会再往下走, 因为return)
  • frame select 5 查看bt后的#序号的函数,也就是直接断点到#序号的函数中
  • frame variable 查看整个方法中的参数

 

  • continue  简写c 继续执行
  • next 简写n  单步运行,一行一行代码走
  • step 简写s  单步运行,遇到子函数会进去


内存断点:(和断点的一些设置一样 delete 、list等)

  • watchpoint set variable cat->name  对cat的name设置内存断点(也就是name改变就断点)
  • watchpoint set expression 0x00000003d…    给内存地址设置断点

断点添加指令:

  • break command add 1              添加指令
  • breakpoint command list 1     查看1处指令
  • breakpoint command delte 1   删除指令


stop-hook

pass和debugView 不会触发,只对breadpoint,watchpoint

  • target stop-hook add -o “p self.cat.name”
  • target stop-hook delete  删除
  • undisplay 1           删除一组
  • target stop-hook list    查看所有

image

  • image lookup -a 0x32323f2    通过地址查看指令
  • image lookup -t Animal  查看类的信息 (包含了头文件)
  • image list

例子:真机上崩溃信息

可以用image lookup -a 0x18564ed8c 这样方式来看崩溃的堆栈信息


总结:

lldb在断点启动的时候会走 $HOME/.lldbinit 文件 (如果没有自己新建),里面可以配置一些指令,一般是用作导入配置文件

发表回复

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud