REA 对接 Ghidra 12.1.4:配置与验证全流程教程,拿到第一次反编译结果
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
REA 是把 Ghidra、Hopper 等逆向引擎接入 AI 客户端的逆向工程工具(Reverse Engineer Anything),让你用自然语言提问就能拿到反编译、xref 和调用链。照本文四个动手环节做完,你会完成 Ghidra 12.1.4 与 JDK 21 的对接、通过自检验证、注册进现有 AI 客户端,并跑通第一次原生二进制分析。
确认前置条件:REA 运行时与引擎版本约束
| 项目 | 要求 | 说明 |
|---|---|---|
| REA 运行时 | Node.js 22.19+ / 24.11+ / 26+ | 23、25 与预览版不受支持 |
| Ghidra | 12.1.x(官方已验证 12.1.4) | 由安装目录的application.properties声明版本 |
| JDK | 64 位完整版,大版本落在该 Ghidra 安装声明的区间内(12.1 系列要求 21+,无上限) | 精简版 JRE 不被接受,必须带javac |
| 平台 | Linux x64/arm64、macOS x64/arm64 | Windows x64 为实验性 P0,见专门小节 |
JDK 版本必须以 Ghidra 安装自身声明的application.java.min/application.java.max区间为准,不是你想装什么装什么。另记住一条边界:REA 只做"连接 + 校验",从不替你下载、安装或升级 Ghidra 与 Java。
安装 Ghidra 12.1.4 与 JDK 21
这步完全在 REA 之外完成。把两样软件解压/安装到固定目录:
/opt/ghidra_12.1.4_PUBLIC # Ghidra 12.1.4 解压根目录 /opt/jdk-21 # JDK 21 完整版确认对了的验证点:
- Ghidra 目录中存在
support/analyzeHeadless(Linux/macOS)或support/analyzeHeadless.bat(Windows)——这是 REA 启动无头分析的入口; - 终端里
javac可用,证明是完整版 JDK; - macOS 用户:安装必须包含与本机架构匹配的原生反编译器(位于
Ghidra/Features/Decompiler/os/<platform>/),REA 不会替你构建它,也不会改动 Gatekeeper 隔离属性; - Windows 用户:仅支持本地 NTFS 卷上的原生 x86-64 PE 应用与 DLL。
导出环境变量指向引擎
核心对接只有两个变量:
export GHIDRA_INSTALL_DIR=/opt/ghidra_12.1.4_PUBLIC export JAVA_HOME=/opt/jdk-21 # java/javac 已在 PATH 时可省略GHIDRA_INSTALL_DIR:必填,指向 Ghidra 根目录;JAVA_HOME:可选,仅在java/javac不在 PATH 时需要。
两个提前知道的可选变量:Hopper 等引擎并存时,设REA_ANALYSIS_PROVIDER=ghidra作为长期偏好;内存受限机器跑小目标时,设GHIDRA_HEADLESS_MAXMEM=512M控制 JVM 堆。
运行 rea doctor 自检验证
rea doctor是纯只读健康检查,不改任何配置。只排查 Ghidra 这一个引擎时用作用域写法:
rea doctor --provider ghidra --json逐项通过标准:
| 检查项 | 通过条件 |
|---|---|
| 平台与架构 | Linux x64/arm64 或 macOS x64/arm64 |
| Ghidra 版本 | 12.1.x |
| 无头入口 | analyzeHeadless(.bat) 存在 |
| Java 大版本 | 落在安装声明的区间内(21+) |
| JDK 完整性 | 64 位,且javac/javac.exe齐全 |
✅ Ghidra 相关检查项全部通过,即环境对接成功。⚠️ 任一项失败时,先按报告给出的 remediation 修复对应项,别急着改其它配置。
注册 REA 到 AI 客户端
做什么:把 REA 的 MCP 注册写进你现有的 Agent(Claude Code、Codex、Cursor、VS Code 等),之后对话中即可直接调用分析能力。
rea setup # 交互:选客户端 → 审计划 → 批准 rea setup --client codex --dry-run --json # 脚本:只读预览 rea setup --client codex --json # 批准后应用安全机制值得强调:setup 先给出完整计划再动手——每一条环境变更(包括 Ghidra/JDK 路径条目)都逐条列出来供你审阅,批准后才写文件。写入采用原子替换并自动备份,保留无关条目与注释;任何提示处按 Ctrl-C 都是零改动。已验证的 Ghidra/JDK 路径会被保留进所选客户端配置,MCP 服务启动时直接定位到引擎。
跑通首次 Ghidra 二进制分析
先确认引擎已被识别:
rea providers --json再跑最小用例:
rea inspect /path/to/binary --provider ghidra --jsonREA 通过内置 Java 桥把目标副本导入临时私有工程,默认自动分析完成后才返回概览结果。这一步解锁 25 个只读 Ghidra 操作:13 项清单/名称/搜索 + 12 项函数分析,覆盖反编译、汇编、调用解析、xref、指令级事实与恢复的数据类型。
图:REA 原生引擎会话效果示例(官方文档示例为 Hopper 会话;Ghidra 的结果是同构的 Evidence 记录)。
新手最常踩的两个坑,提前预判:
- 首次查询慢。冷启动包含导入 + 自动分析 + 桥接就绪,REA 的引擎启动上限是 330 秒,而 AI 客户端默认超时往往只有 60 秒。在 SDK 里调用
callTool时记得调大请求超时;超时后用close_binary再对同一目标open_binary(带provider_id: "ghidra")即可恢复,完整流程见 docs/mcp-contracts.md。 - 多引擎并存要显式选择。Hopper 与 Ghidra 同时支持目标时,直接打开会报 "ambiguous"。用
--provider ghidra、open_binary的provider_id: "ghidra"或REA_ANALYSIS_PROVIDER环境变量指定一次即可,会话内不会自动切换。
Windows 平台的等效做法
Windows x64 目前是实验性 P0 边界:仅限本地 NTFS 上的原生 x86-64 PE 应用与 DLL,会话只读。PowerShell 中配置:
$env:GHIDRA_INSTALL_DIR = "C:\tools\ghidra_12.1.4_PUBLIC" $env:JAVA_HOME = "C:\tools\jdk-21" $env:REA_ANALYSIS_PROVIDER = "ghidra" rea doctor --json rea inspect "C:\fixtures\sample.exe" --provider ghidra --format jsonDACL/Job Object 安全控制与已验证范围的细节见 docs/windows-ghidra-p0.md。
延伸阅读
- docs/installation.md:安装选项全集与 setup 变更审阅细节
- docs/ghidra-provider.md:25 个 Ghidra 只读操作各自的契约语义
- docs/native-investigation.md:原生分析原语与工作流总览
- docs/testing.md:
npm run verify:ghidra等真实引擎验收通道
doctor、setup 与首次分析三项都通过后,你的 AI 客户端就拥有了完整的 Ghidra 静态分析能力——从"反编译这个函数"到"追这条调用链",问一句就行。🚀
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考