工具

class-dump Objective-C 头文件生成工具

一款命令行工具,读取 Mach-O 可执行文件、框架和 bundle 中的 Objective-C 运行时元数据,并将其中的类、类别和协议输出为常规的 Objective-C 声明;信息与 otool -ov 所显示的相同,但形式更紧凑。它可以为每个类生成一个头文件,递归展开二进制所用的框架,从通用二进制中选择单一架构,对输出进行筛选或排序,并标注实例变量偏移和方法实现地址。

使用条件与局限

  • 项目已基本停滞:最新标签 3.5 的日期为 2013-11-16,GitHub 上的发布条目止于 3.4,README 让用户到作者网站获取最新版本。所审阅的 master 提交日期为 2019-03-15,比 3.5 多出 75 个提交,其中包含尚未发布的改动,例如改用 macOS 10.14 SDK 构建。
  • 需在 macOS 上用 Xcode 打开仓库自带的 class-dump.xcodeproj 构建,各目标的部署目标为 macOS 10.8 和 10.9。README 的用法说明列出 ppc、ppc64、i386 和 x86_64,3.5 版更新日志又加入 arm64;文档未说明是否支持更新的 Apple 架构或元数据格式。
  • 输入为使用者已有的 Mach-O 文件、框架或 bundle,且只解析 Objective-C 元数据;带有加密加载命令的文件会在输出头部被标出。未发布部分的更新日志称 Swift 类型的类型编码为空,现以 MISSING_TYPE 写出,因此无法还原 Swift 类型。输出只有声明,不含方法实现。
  • Tests/doTests.py 是一个 Python 2 脚本,用于在已安装的系统框架上比较新旧两个构建的输出差异;仓库没有 CI。README 中的声明采用 GPL-2.0-or-later 许可,版权归 Steve Nygard(1997–2019),仓库中没有单独的许可证文件;ThirdParty/blowfish.c 采用 LGPL-2.1-or-later。根据闭源二进制生成的头文件仍受其权利人的权利约束。本次未构建或运行该工具。

关于此条目

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

来源复核于

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

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

一手来源

  1. README.md GitHub · nygard/class-dump · 修订 2c82b4f
  2. CHANGELOG.md#L1-L15 GitHub · nygard/class-dump · 修订 2c82b4f
  3. class-dump.xcodeproj/project.pbxproj GitHub · nygard/class-dump · 修订 2c82b4f
  4. Source/CDClassDumpVisitor.m#L104-L112 GitHub · nygard/class-dump · 修订 2c82b4f
  5. Tests/doTests.py GitHub · nygard/class-dump · 修订 2c82b4f
  6. ThirdParty/blowfish.c GitHub · nygard/class-dump · 修订 2c82b4f
  7. https://github.com/nygard/class-dump/releases/tag/3.4

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

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