用于不常见 CPU、DSP 和 GPU 架构的 Ghidra 处理器模块(SLEIGH)。目标:Ghidra 12.1.4。
本项目将 Mr-wolf-is-me/IDA-Processor-Modules 所涵盖的架构集合引入 Ghidra,后者是一组 IDA Pro 处理器模块的集合。此处的每个模块都是该处列出的某个 IDA 模块在 Ghidra 中的对应实现。
| 模块 | 架构 | 语言 ID | 原始 IDA 模块 |
|---|---|---|---|
| PRU | TI PRU / PRU-ICSS,核心版本 V0–V4 | PRU:LE:32:v0 … PRU:LE:32:v4 | pru-ida |
| MicroBlaze | AMD/Xilinx MicroBlaze,32/64 位,BE/LE | MicroBlaze:{BE,LE}:{32,64}:default | microblaze-ida |
| xCORE | XMOS xCORE XS1、XS2(xCORE-200)、XS3(xcore.ai) | xCORE:LE:32:XS1、XS2、XS3 | xcore-ida |
| C7x | TI C7000 DSP(C7100、C7120、C7504、C7524) | C7x:LE:64:C7100、C7120、C7504、C7524 | c7x-ida |
| SASS | NVIDIA GPU SASS,Kepler 至 Blackwell | SASS:LE:64:SM35、SM52、SM60、SM70、SM75、SM80、SM86、SM89、SM90、SM100、SM120 | sass-ida |
每个模块的 README 列出了其语言变体、与参考反汇编器的匹配程度、p-code 所建模的内容、已知缺口以及如何运行其测试。STATUS.md 跟踪所有模块中哪些功能可用、哪些不可用,以及经验教训。
IDA 模块以发布 zip 的形式分发,其条款禁止衍生作品;这些仓库本身仅包含 README、许可证和截图。本项目是一个独立的净室实现,而非对该代码的移植:
dispru/dis7x、GNU binutils、LLVM、NVIDIA nvdisasm)进行了检查。这一想法以及选择这些架构的功劳归于 IDA-Processor-Modules 的作者。
每个模块目录都是一个标准的 Ghidra 扩展。
预构建 zip: Release builds 工作流会为三个最新的 Ghidra 版本构建每个模块。每个 v* 标签都会在 Releases 页面上发布这些 zip;其他推送则将其保留为工作流产物。zip 只能安装到其名称中所指的 Ghidra 版本中。
自行构建扩展 zip:
tools/build-release.sh /opt/ghidra_12.1.4_PUBLIC dist # one zip per module in dist/
脚本使用该 Ghidra 的编译器编译 SLEIGH 规范,并使用 Ghidra 在 support/gradle 中附带的 Gradle wrapper 构建每个模块。PRU、MicroBlaze 和 SASS 包含 Java 代码(ELF 加载器扩展),因此构建需要带有 javac 的完整 JDK(仅含 JRE 的软件包不够):Ghidra 12.1 需要 JDK 21 或更高版本,Ghidra 12.2 需要 JDK 25。将 JAVA_HOME 指向它。
在 Ghidra 中通过 File → Install Extensions 安装该 zip,然后重启 Ghidra。
用于开发时,将每个模块符号链接到 Ghidra 安装目录中,并编译 SLEIGH 规范:
export GHIDRA_INSTALL_DIR=/opt/ghidra_12.1.4_PUBLIC
tools/link-modules.sh
for d in */data/languages; do "$GHIDRA_INSTALL_DIR/support/sleigh" -a "$d"; done
tools/ghidra-dis.sh <language-id> <raw.bin> 会打印原始二进制文件的无头线性扫描反汇编结果,这对于快速检查很有用。
MIT。此许可证仅涵盖本仓库中的代码,不涵盖原始 IDA 模块,这些模块有其自身的条款。