美文网首页
iOS逆向-18:LLDB调试

iOS逆向-18:LLDB调试

作者: 恍然如梦_b700 | 来源:发表于2021-05-19 23:53 被阅读0次

    在逆向环境中,拿不到源码,只能通过指令设置断点

    LLDB(Low Lever Debug)

    默认内置于Xcode中的动态调试工具。标准的 LLDB 提供了一组广泛的命令,旨在与老版本的 GDB 命令兼容。 除了使用标准配置外,还可以很容易地自定义 LLDB 以满足实际需要。

    这里列举了一些常用的命令:

    断点设置

    • 设置断点
      breakpoint set -n XXX
      set 是子命令
      -n 是选项 是--name 的缩写!

    • 查看断点列表
      breakpoint list

    • 删除
      breakpoint delete 组号

    • 禁用/启用
      breakpoint disable 禁用
      breakpoint enable 启用

    • 遍历整个项目中满足Game:这个字符的所有方法
      breakpoint set -r Game:

    流程控制

    • 继续执行
      continue c

    • 单步运行,将子函数当做整体一步执行
      n next
      单步运行,遇到子函数会进去
      s

    • stop-hook
      让你在每次stop的时候去执行一些命令,只对breadpoint,watchpoint

    • 其他命令
      image list
      p expression 除了打印还可以执行一些代码
      b -[xxx xxx]
      x16进制打印
      register read 读寄存器
      po
      b -r xx断住所有包含的方法
      b -selector xx断住所有xx方法
      help xx查看指令

    函数调用栈

    bt //所有调用栈
    up //跳上层堆栈
    down
    frame select 12 跳指定下标堆栈
    frame variable 当前函数参数,只能修改当前函数参数
    thread return 代码回滚,直接返回,不执行后面的代码。提前返回,可以通过这种方式绕过hook

    内存断点

    Person *person = [Person new];
    person.name = "FY";
    

    下内存断点:
    watchpoint set variable person->_name
    watchpoint set expression 0x456 &person->_name
    当进行修改的时候就会触发内存断点

    image.png
    然后我们bt一下
    image.png
    可以看到方法的调用栈
    break command add 1
    在断点中添加一些指令

    让你在每次stop的时候去执行一些命令,只对breadpoint,watchpoint
    target stop-hook add -o "frame variable"
    target stop-hook add -o "po self.view"
    target stop-hook list

    这些指令也可以放到家目录下的.lldbinit中,只要lldb一启动就会执行里面的命令,一般的lldb插件就是在这个目录配置的

    cd ~ 进入家目录
    .lldbinit

    相关文章

      网友评论

          本文标题:iOS逆向-18:LLDB调试

          本文链接:https://www.haomeiwen.com/subject/vrupjltx.html