iOS restore-symbol恢复符号表

/ 0

安装

下载地址:https://github.com/tobefuturer/restore-symbol

编译命令行工具:

git clone --recursive https://github.com/tobefuturer/restore-symbol.git && cd restore-symbol && make ./restore-symbol

将命令行工具拷贝到 /usr/local/bin 目录下。

恢复OC方法符号

如果只想恢复 OC 方法符号,直接在终端使用以下命令:

restore-symbol 原Mach-O文件路径 -o 恢复符号后的Mach-O文件路径

将新生成的 Mach-O 文件拷贝到 APP 的 Bundle 下替换原来的文件,然后重签名安装包后即可安装到手机上。

然后我们就可以在 LLDB 调试时,使用 breakpoint set -a "-[class method]" 打断点调试。并且 bt 打印的线程堆栈信息也直观看到方法的执行流程。

恢复Block符号

如果想恢复 OC 方法和 Block 符号,则需要配合 IDA 工具。

打开 IDA 中的 File - Script file,选中 ida_search_block.py 脚本。IDA 会搜索 Block 符号并生成对应的 json 符号文件,符号文件生成成功后会存放在 Mach-O 所在目录下,文件名为 block_symbol.json

restore-symbol 原Mach-O文件路径 -o 恢复符号后的Mach-O文件路径 -j block_symbol.json文件路径