iOS逆向之旅(进阶篇) — 工具(LLDB)
簡介
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 代碼回滾到上一層,并退出
總結
以上是生活随笔為你收集整理的iOS逆向之旅(进阶篇) — 工具(LLDB)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你们可能都小看了Windows!
- 下一篇: Java并发编程——volatile