安装
下载地址: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文件路径