从 LLDB 中的 __objc_* 部分加载符号

逆向工程 操作系统 数据库
2021-06-13 10:05:59

当一个已经被剥离的可执行文件在lldb中打开时,lldb不知道任何函数的名称并且必须在十六进制地址上手动设置断点,这很烦人。

但是,对于 Objective C 可执行文件,至少应该可以从目标文件中的 Objective C 运行时信息重构函数的地址: __DATA,__objc_classlist , __TEXT,__objc_methname 等等。

目前有没有办法在 lldb 中做到这一点?还是只是忽略了这些信息?

2个回答

几年前我为 gdb 解决了这个问题,请参阅Stack Overflow 上的将类转储信息导入 GDB

我不确定 lldb 是否有add-symbol-file等效的命令。从 lldb-dev 邮件列表中的内存位置加载符号表明您可能必须创建自己的 .dSYM 文件而不是 .stabs 文件。

因为Objc数据(选择器)必须对Objc代码可用才能运行。

LLDB 可以使用breakpoint set -n "[SomeClass someFunction:]"命令根据选择器设置断点您还可以查看LLDB 教程