iOS逆向之旅(進階篇) — 工具(LLDB)

洪呵呵發表於2018-10-26

簡介

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 程式碼回滾到上一層,並退出

相關文章