iOS逆向-18:LLDB调试
在逆向环境中,拿不到源码,只能通过指令设置断点
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]
x
16进制打印register read
读寄存器po
b -r xx
断住所有包含的方法b -selector xx
断住所有xx方法help xx
查看指令
函数调用栈
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当进行修改的时候就会触发内存断点
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
转自链接:https://www.jianshu.com/p/59123ee28503