iOS逆向之动态调试任意APP,LLDB指令
指令的格式
<command> [<subcommand> [<subcommand>...]] <action> [-options [option�value]] [argument [argument...]]
<command> :命令
<subcommand> :子命令
<action> :命令操作
<options> : 命令选项
<argument> : 命令参数
ps: 大部分情况下 [ ] 里面的东西是可以省略
举例
给 test 函数设置断点
breakpoint set -n test
breakpoint 是 <command> :命令
set 是 <subcommand> :子命令 / <action> :命令操作
-n 是 <options> : 命令选项
test 是 <argument> : 命令参数
连在一起的意思就是 下达一个名字为 test 的断点命令
常用指令
help <command>
help 后面接指令 查看该指令的用法
比如 help breakpoint 、help breakpoint set
expression <cmd-options> -- <expr>
执行一个表达式
<cmd-options> : 命令选项
-- :命令选项结束符 ,表示前面所有的命令选项已经设置完毕,如果没有命令选项, -- 可以省略
<expr> : 需要执行的表达式
expression 、 expression -- 和指令 print 、p 、 call 的效果一样
expression -O -- 和指令 po的效果一样 (答应对象)
thread backtrace
打印线程的堆栈信息
和指令 bt 的效果一样
ps:frame 表示 栈帧 一个frame 表示一帧 即表示一个函数
thread return [<expr>]
让函数直接返回某个值,不会执行后面的代码
[<expr>]有返回值带相对应类型的返回值,没有则不带
frame variable [<variable-name>]
打印当前栈帧的变量
thread continue 、 continue 、c : 程序继续运行
thread step-over 、next 、n : 单步运行,把子函数当做整体一步运行,遇到函数会进去
thread step-in 、step 、s : 单步运行,遇到子函数会进入子函数 遇到函数会跳过
thread step-out 、finish :直接执行完当前函数的所有代码,返回到上一个函数
thread step-inst-over 、nexti、 ni
thread step-inst、stpi、si
si、ni 和s、n类似
s 、n 是源码级别
si 、ni是汇编指令级别