{
  "added_at": "2026-10-30",
  "additional_evidence_urls": [
    "https://github.com/nygard/class-dump/blob/2c82b4ff12b2ea5d1ac23e49281d496997370841/CHANGELOG.md#L1-L15",
    "https://github.com/nygard/class-dump/blob/2c82b4ff12b2ea5d1ac23e49281d496997370841/class-dump.xcodeproj/project.pbxproj",
    "https://github.com/nygard/class-dump/blob/2c82b4ff12b2ea5d1ac23e49281d496997370841/Source/CDClassDumpVisitor.m#L104-L112",
    "https://github.com/nygard/class-dump/blob/2c82b4ff12b2ea5d1ac23e49281d496997370841/Tests/doTests.py",
    "https://github.com/nygard/class-dump/blob/2c82b4ff12b2ea5d1ac23e49281d496997370841/ThirdParty/blowfish.c",
    "https://github.com/nygard/class-dump/releases/tag/3.4"
  ],
  "category": "native-analysis",
  "description_en": "Command-line utility that reads the Objective-C runtime metadata in Mach-O executables, frameworks and bundles and prints it as ordinary Objective-C declarations for the classes, categories and protocols it finds, the same information otool -ov shows in a more compact form. It can write one header file per class, recurse into the frameworks a binary uses, choose one architecture from a universal binary, filter or sort the output, and annotate it with instance-variable offsets and implementation addresses.",
  "description_zh": "一款命令行工具，读取 Mach-O 可执行文件、框架和 bundle 中的 Objective-C 运行时元数据，并将其中的类、类别和协议输出为常规的 Objective-C 声明；信息与 otool -ov 所显示的相同，但形式更紧凑。它可以为每个类生成一个头文件，递归展开二进制所用的框架，从通用二进制中选择单一架构，对输出进行筛选或排序，并标注实例变量偏移和方法实现地址。",
  "entry_url": "https://awesomerea.org/resources/class-dump/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/class-dump/",
  "evidence_url": "https://github.com/nygard/class-dump/blob/2c82b4ff12b2ea5d1ac23e49281d496997370841/README.md",
  "group": "tools",
  "id": "class-dump",
  "json_url": "https://awesomerea.org/resources/class-dump/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/class-dump/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/class-dump/index.md",
  "name": "class-dump",
  "name_zh": "class-dump Objective-C 头文件生成工具",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "Dormant: the newest tag, 3.5, is dated 2013-11-16, GitHub release entries stop at 3.4, and the README points to the author's website for the latest version. The reviewed master commit, from 2019-03-15, is 75 commits past 3.5 and carries unreleased changes such as building with the macOS 10.14 SDK.",
    "Builds use Xcode on macOS with the bundled class-dump.xcodeproj, whose targets set macOS 10.8 and 10.9 deployment targets. The README's usage text lists ppc, ppc64, i386 and x86_64, and the 3.5 changelog adds arm64; support for later Apple architectures or metadata formats is not documented.",
    "Input is a Mach-O file, framework or bundle the user already has, and only Objective-C metadata is decoded; files with an encryption load command are flagged in the output header. The unreleased changelog says Swift types have a blank encoding and are now written as MISSING_TYPE, so Swift types are not recovered. Output is declarations without method bodies.",
    "Tests/doTests.py is a Python 2 script that diffs an older and a newer build's output over the installed system frameworks; the repository has no CI. The README notice applies GPL-2.0-or-later, copyright 1997-2019 Steve Nygard, and there is no separate license file; ThirdParty/blowfish.c is LGPL-2.1-or-later. Headers generated from closed-source binaries remain subject to their owners' rights."
  ],
  "requirements_zh": [
    "项目已基本停滞：最新标签 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。根据闭源二进制生成的头文件仍受其权利人的权利约束。"
  ],
  "targets": [
    "app",
    "binary"
  ],
  "url": "https://github.com/nygard/class-dump",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
