工具
ktool Mach-O 与 Objective-C 分析工具包
纯 Python 编写的 Mach-O 与 Objective-C 静态分析工具包,可作为 ktool 命令行、终端浏览界面(ktool open)或程序库使用,没有需要编译的依赖。其命令可列出加载命令、链接库、符号表、导入与导出符号、Objective-C 类和协议、Swift 类型、函数起始地址以及代码签名权限(entitlements),并可导出重建的 Objective-C 头文件或 .tbd 存根。它还能列出并提取内核缓存中的 kext,拆分和合并 fat 二进制文件,修改安装名并插入加载命令。
- 目标
- 应用 · 二进制
- 类别
- 原生分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅时 PyPI 上的最新版本为 k2l 2.0.0,上传于 2024-01-10,GitHub 上也有对应标签。所审 master 分支 2026-03-07 的最新提交在 pyproject.toml 中声明版本 2.1.2,该版本尚未发布。README 注明终端图形界面仍在积极开发中,还列出了 file 和 img4 工具,但所审的命令解析代码中并未定义这两个命令。
- 用 pip install k2l 安装:该包要求 Python 3.6.2 或更高版本,依赖 Pygments,在 Windows 上还会安装 windows-curses。README 称可在 Windows、macOS、Linux(含 ARM64)、通过 iSH 运行的 iOS、通过 Termux 运行的 Android、WebAssembly 和 Brython 上运行。除非设置 KTOOL_NO_UPDATE_CHECK,每次运行都会在后台线程中向 PyPI 查询是否有更新的 k2l。
- 输入是使用者自行提供的 Mach-O 文件、fat 二进制文件或内核缓存;仓库未提交任何 Mach-O 二进制文件。tests/src 中有两个小型 Objective-C 测试源码、一个权限 plist,以及 libSystem.tbd——这是 Apple SDK 中常见的那类文本存根,列出 watchOS libSystem 的导出符号,用于链接 arm64_32 测试构建;tests/build.ninja 在本地用 Xcode 的 clang、lipo 和 codesign 编译测试二进制文件。
- macOS 上的 GitHub Actions 工作流会构建这些测试二进制文件,运行 tests/unit.py,并测试 insert、edit、lipo、dump 和 symbols 命令;它在所审提交上的运行结果为失败。
- MIT(LICENSE,版权 2021 _kritanta)。EXTERNAL_LICENSES 说明链式修复(chained fixup)代码基于作者为 Binary Ninja 的 Mach-O 视图插件编写的代码,并附有相应的 Apache-2.0 许可证。所审来源未提及任何 AI 或 REA 用途,本条目也未安装或运行该工具。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · 0cyn/ktool · 修订 faed829
- pyproject.toml GitHub · 0cyn/ktool · 修订 faed829
- src/ktool/ktool_script.py GitHub · 0cyn/ktool · 修订 faed829
- tests/src GitHub · 0cyn/ktool · 修订 faed829
- tests/build.ninja GitHub · 0cyn/ktool · 修订 faed829
- .github/workflows/tests.yml GitHub · 0cyn/ktool · 修订 faed829
- LICENSE GitHub · 0cyn/ktool · 修订 faed829
- EXTERNAL_LICENSES/README.md GitHub · 0cyn/ktool · 修订 faed829
- https://github.com/0cyn/ktool/releases/tag/2.0.0
- https://pypi.org/project/k2l/2.0.0/
- https://github.com/0cyn/ktool/actions/runs/22801141527