工具

restore-symbol iOS 符号表恢复工具

运行于 macOS 的命令行工具,为已剥离符号的 iOS 应用 Mach-O 可执行文件重建符号表并输出新文件,使 lldb 等调试器能按 Objective-C 方法名设置断点并显示名称。它借助 class-dump 从二进制的 Objective-C 元数据中恢复方法名和地址,也可以从 JSON 文件合并额外的名称与地址,例如随附 IDA 脚本找到的 block 符号。

使用条件与局限

  • 项目没有发布版本或标签;所审阅的 2019-04-27 master 提交即最新提交,仓库也没有测试或 CI。README 只涉及 Objective-C 方法和 block,没有提到 Swift 符号;未核实与当前 Xcode、macOS 及 iOS 二进制的兼容性。
  • 需在 macOS 上用 Xcode 构建:make 会初始化固定版本的 class-dump 子模块(0xced 的分支),并用 xcodebuild 构建面向 macOS 10.11 的工程。block 符号脚本 search_oc_block/ida_search_block.py 在 IDA 中运行,使用 Python 2 的 print 语句和旧版 idaapi.get_inf_structure 调用,并输出 block_symbol.json。
  • 输入是使用者有权分析的应用中的单架构 armv7 或 arm64 Mach-O 可执行文件;遇到 fat 文件时工具会拒绝处理并提示先用 lipo 拆分,处理结果写入新的输出文件而不改动输入文件。README 随后用使用者自己的开发者证书重新签名应用包,并在设备上用 lldb 调试。仓库只有源码和 README 截图,不含任何应用二进制。
  • 仓库没有许可证文件,GitHub 也未识别出许可证,因此 restore-symbol 自身代码的复用条款未说明;构建会链接 class-dump 子模块中的 MachObjC 库,该库采用 GPL-2.0-or-later。所审来源未提及 REA 的使用,本条目未处理任何二进制。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
应用 · 二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · tobefuturer/restore-symbol · 修订 83ccb90
  2. source/restore-symbol.m GitHub · tobefuturer/restore-symbol · 修订 83ccb90
  3. makefile GitHub · tobefuturer/restore-symbol · 修订 83ccb90
  4. .gitmodules GitHub · tobefuturer/restore-symbol · 修订 83ccb90
  5. restore-symbol.xcodeproj/project.pbxproj GitHub · tobefuturer/restore-symbol · 修订 83ccb90
  6. search_oc_block/ida_search_block.py GitHub · tobefuturer/restore-symbol · 修订 83ccb90
  7. README.md GitHub · 0xced/class-dump · 修订 a8877b6

同分区更多条目:原生二进制

原生二进制分区全部 90 项资源