工具
Yagi:IDA 中的 Ghidra 反编译器
Airbus CERT 开发的插件,把 Ghidra 的原生反编译器嵌入 IDA Pro 和 IDA Free:在函数上按 F3 即可在 IDA 中查看 Ghidra 生成的 C 代码,在其中所做的修改(包括函数原型等全局符号,以及栈变量和寄存器变量的名称与类型)会保存到 IDA 数据库。README 列出已支持 x86、x86-64、ARM、AArch64、PowerPC、MIPS、SPARC、AVR8、6502、Z80 和 eBPF,而 Dalvik、JVM、RISC-V、68000 等其他 Ghidra 处理器尚未启用。
- 目标
- 二进制
- 类别
- 原生分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 自最新版本 v1.5.0(2022-08-04)后即无更新;该版本新增 eBPF 和 IDA 7.7 支持,提供适用于 IDA 7.6、IDA 7.7 和 IDA Freeware 的 Windows MSI 安装包;最后的 Linux 安装包(适用于 IDA 7.5、7.6 和 Freeware 的 .sh 与 .tar.gz)见 v1.4.0(2021-12-20)。没有发布适用于 IDA 8 及以后版本的构建,也未测试与当前 IDA 版本的兼容性。默认分支为 main;较旧的 master 分支停在 2021 年。
- 从源码构建需要递归克隆,子模块包括 Airbus CERT 维护的 Ghidra 分支(fix-memory-access-violation 分支,固定在 Ghidra 10.1 发布提交)、eBPF-for-Ghidra 和 cylance/eBPF_processor。另外需要 CMake 3.11+、C++ 编译器(Windows 上为 Visual Studio)、用于解析 SLEIGH 语法的 flex 和 bison、用于生成 Windows 安装包的 WiX,以及与使用者 IDA 版本对应的 Hex-Rays IDA SDK;仓库不包含该 SDK。
- 工作流在自托管的 Windows 运行器上,基于本地安装的 IDA 7.6 SDK 构建。其 googletest 单元测试通过模拟的 IDA 加载器、符号和类型接口,反编译直接写在测试源码中的机器码字节数组,覆盖 x86(16、32、64 位)、ARM、MIPS、PowerPC、SPARC、6502 和 Z80。README 的待办事项包括枚举类型、AArch64 函数结尾规则以及修改常量类型。
- Apache-2.0 许可;Ghidra 反编译器沿用其自身的 Apache-2.0 条款,IDA 及其 SDK 是 Hex-Rays 的产品,各有许可条款。本次审阅未构建或运行;所审来源未确立与 REA 的关联。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · airbus-cert/Yagi · 修订 6fc4787
- CHANGELOG.md GitHub · airbus-cert/Yagi · 修订 6fc4787
- .gitmodules GitHub · airbus-cert/Yagi · 修订 6fc4787
- CMakeLists.txt GitHub · airbus-cert/Yagi · 修订 6fc4787
- tests GitHub · airbus-cert/Yagi · 修订 6fc4787
- .github/workflows/unittests.yml GitHub · airbus-cert/Yagi · 修订 6fc4787
- LICENSE GitHub · airbus-cert/Yagi · 修订 6fc4787
- https://github.com/airbus-cert/Yagi/releases/tag/v1.5.0
- https://github.com/airbus-cert/Yagi/releases/tag/v1.4.0