用途:在 macOS/iOS 目标上做动态调试,包括附加进程、启动程序、下断点、表达式求值、符号查找与内存读写;也可用于 Linux 上带 DWARF 的调试版程序。Linux 目标建议用 re-gdb,Windows 用 re-x64dbg,iOS 越狱/证书问题属 re-mobile 域。
准备:macOS 自带 lldb(xcode-select --install),Linux 用 apt install lldb / dnf install lldb / pacman -S lldb,macOS 可用 brew install llvm 获取新版;用 lldb --version 验证。attach 前需在系统设置 > 隐私与安全性 > 开发者工具授权终端,旧系统可用 sudo DevToolsSecurity -enable;一般不要关 SIP。
主要用法:process attach --pid <pid> 或 --name 附加,target create ./sample 后 run --args 启动,process launch --stop-at-entry 停在入口。image lookup -n/-a/-rn 查符号,image list 看镜像与基址(-o 加偏移)。expr 可读写寄存器与内存,memory read/write/find/region 做内存操作。断点用 breakpoint set -n/-a/-c,可加 breakpoint command add 自动执行命令;内置 Python 可用 script import lldb 或 lldb -s script.lldb 批处理。单步与栈用 thread step-over/into/out、thread backtrace、frame variable、register read。
限制与坑:SIP/TCC 会拦截 attach,TCC 弹窗需手动确认;task_for_pid entitlement、Hardened Runtime、SIP 三层限制可能导致授权后仍失败;修改过的 Mach-O 需 codesign -f -s - 重签;ASLR 使基址每次不同,脚本应先用 image list -o 取基址;expr 求值有副作用,验证场景优先用 frame variable。内核调试需 KDK 与开发内核,普通逆向用不上。版本差异与调试服务器细节见 gotchas。