# ghidra_kernelcache Apple 内核缓存分析框架

> 用于逆向分析 iOS 与 macOS 上 Apple kernelcache 和内核扩展的 Ghidra 脚本框架。它以 Siguza 的 iometa 提取的 C++ 类信息为起点，为内核恢复符号，重建 IOKit 类层次、结构体、命名空间和带类型方法定义的虚表，并通过 arm64e 指针认证常量或基于 p-code 的数据流分析解析虚函数调用引用。其他脚本可修复 externalMethod 和 getTargetAndMethodForIndex 分派表、根据头文件应用 XNU 函数签名、传播类型、加载 KDK 的 DWARF 符号，以及在项目之间复制结构体定义。

- 类型：工具
- 目标：二进制 · 固件
- 类别：固件工具
- 关联：基础工具
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/0x36/ghidra_kernelcache>
- 一手来源：<https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/ghidra-kernelcache/>
- 记录 JSON：<https://awesomerea.org/resources/ghidra-kernelcache/record.json>
- 英文版：[English](https://awesomerea.org/resources/ghidra-kernelcache/index.md)

## 使用条件与局限

- 没有发布版本或标签。所审阅的 master 提交日期为 2022-01-19，也是最新提交。README 称该框架适用于 iOS 12–15 的 kernelcache，以及 macOS 11–12 的 kernelcache 和单个 KEXT（arm64e 与 x86_64）。它在 Ghidra 10.1_PUBLIC 和 10.2_DEV 上测试过，不向后兼容。文档没有说明对更新的 Ghidra 版本或 iOS 15、macOS 12 之后 kernelcache 的支持。
- 安装方式是把克隆的仓库加入 Ghidra 脚本管理器的目录列表，脚本随后出现在 iOS→kernel 分类下，并带有工具栏按钮和快捷键。这些脚本是采用 Python 2 语法的 Ghidra Jython 脚本。工具栏图标指向仓库中并不存在的 logos/ 文件夹；README 提到的 utils/class.py 在代码树中对应 utils/ios_kc.py。
- 内核镜像由分析者自行提供：作为单个 Mach-O 镜像载入的已解压 iOS kernelcache（README 提醒不要使用批量导入），或来自自有系统或 KDK 的 macOS 内核与 KEXT。恢复符号前，需要先运行 Siguza 的独立工具 iometa（MPL-2.0），该工具自述为 arm64 Darwin 内核类信息提取工具；jtool2 符号为可选。README 指出，撰写时 Ghidra 还无法解析完整的 macOS kernelcache，建议先在 IDA 中完成初步分析，再以 XML 形式导入 Ghidra，但这一步不在其说明范围内。为单个 KEXT 恢复符号前，需要先把内核符号化结果存入共享的 Ghidra 项目归档。
- 仓库只包含 Python 脚本、signatures/ 下的 C++ 签名文件和 README 截图，没有提交任何 Apple kernelcache、KEXT 或密钥。README 称类型传播功能比较基础，遇到复杂类型转换时很可能失败；还说 Ghidra 无法还原某些 C++ 符号时 kc.process_kernel_kext() 可能失败，需先运行 DemangleAllScript。采用 Apache-2.0 许可。

## 一手来源

1. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/README.md>
2. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/README.md#L13-L56>
3. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/README.md#L137-L190>
4. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/README.md#L229-L318>
5. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/KC.py>
6. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/jsymbols.py>
7. <https://github.com/0x36/ghidra_kernelcache/tree/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/utils>
8. <https://github.com/0x36/ghidra_kernelcache/tree/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/signatures>
9. <https://github.com/0x36/ghidra_kernelcache/blob/b0961b3cdfb96e8b86c89d73fdedf84affc01c77/LICENSE>
10. <https://github.com/Siguza/iometa/blob/2af3602e7edb72f478aa8958a6386aba846a89de/README.md>

## 同分区更多条目：固件与硬件

- [esp32_image_parser ESP32 固件镜像解析工具](https://awesomerea.org/zh/resources/esp32-image-parser/index.md) · 工具
- [Tigard 多协议硬件接口板](https://awesomerea.org/zh/resources/tigard/index.md) · 工具
- [UBI Reader UBI/UBIFS 镜像读取工具](https://awesomerea.org/zh/resources/ubi-reader/index.md) · 工具
- [payload-dumper-go Android OTA 载荷提取工具](https://awesomerea.org/zh/resources/payload-dumper-go/index.md) · 工具
- [mithril 物联网固件静态扫描器](https://awesomerea.org/zh/resources/mithril-iot-scanner/index.md) · 工具
- [img4tool Apple IMG4 容器工具](https://awesomerea.org/zh/resources/img4tool/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
