iOS逆向之旅(进阶篇) — 工具(LLDB)

1,157 阅读1分钟

简介

LLDB是个开源的内置于XCode的调试工具,给我们平时开发调试带来很大的便利,同时它对我们逆向分析别人的APP同样有很大的帮助。 LLDB的使用其实看LLDB官方文档就可以了

这篇文章我就把常用的指令列举出来,方便日后查阅

断点操作

【为C函数下断点】
$b set -n "C函数名"
【为OC方法下断点】
$b set -n "-[OC类 方法名:]"
【遍历整个项目中,为所有同名的所有方法下断点】
$b set -r 方法名:
【查看断点列表】
$b list
【断点禁用/启用】
$breakpoint disable
$breakpoint enable
【继续执行】
$continue c
【单步运行,将子函数当做整体一步执行】
$n next
$s 单步运行,遇到子函数会进去
【查看指令的用法】
$help [cmd]
【内存访问断点】
$watchpoint set variable p1->name
$watchpoint set expression 0x312315(一个内存地址)
注:断下之后可以通过bt查看堆栈信息,达到了解是从哪修改了内存

内存操作

【查看当前内存/修改当前内存】
$expression self.view.subViews
$p self.view.subViews
$p self.view.backgroudColor = [UIColor redColor];
注意:
p是expression的缩写,并不是print
po 的o是代表打印该类的description

【stop-hook - 让你在每次stop的时候去执行一些命令,只对breadpoint,watchpoint】
$target stop-hook list
$target stop-hook add -o "frame variable"
$target stop-hook delete
【查看代码段】
$image lookup -a 0x102110226 //汇编的地址
$image lookup -t Person //快速查看一个类
$image list //系统加载的各种文件信息
【内存查看】
$memory read 0x地址(缩写是:x)

堆栈操作

【堆栈操作】
$bt //查看堆栈列表
$up //断下后才可以使用 往函数上一层
$down //断下后才可以使用 往函数下一层
$frame select index //定位到第index层的代码位置
$frame variable 查看所有参数,可以通过p进行修改
$thread return 代码回滚到上一层,并退出