REA
全部指南

REA 与 Ghidra:哪种逆向工程流程更适合?

reverseengineeranything.tools

从任务、输入、输出、手动控制、配置要求,以及通过 REA 使用 Ghidra 的方式,对比 REA 和 Ghidra。

本页更新内容

  • — 发布附来源的社区案例、实用指南,并明确证据的局限。

希望直接探索和编辑原生二进制分析项目时,使用 Ghidra;希望编程智能体或 CLI 调查软件并返回附证据的发现时,使用 REA。REA 可以把 Ghidra 作为原生分析提供程序,因此两者可以成为同一流程的一部分。

这是独立社区对比。REA 仓库和 Ghidra 仓库是了解当前功能和要求的一手来源。

REA 和 Ghidra 有什么区别?

Ghidra 是软件逆向工程框架,提供反汇编、反编译、图表、脚本,以及交互式或自动化分析。Ghidra 自身的分析环境让分析者直接控制调查。Ghidra 官方 README介绍了处理器、可执行格式和扩展支持。

REA 是涵盖多类目标的 MCP 服务器和 CLI,包括原生二进制文件、JavaScript/Electron 应用、浏览器页面和托管程序集。编程智能体调用 REA 工具,获取发现和局限,再决定下一步检查什么。深度原生分析时,REA 连接到受支持的 Ghidra、Hopper 或 IDA 安装。REA 原生分析指南解释了这种提供程序关系。

你需要什么? 更合适的起点 输入 输出或优势
手动追踪二进制函数和图表 直接使用 Ghidra 支持的二进制文件 完整交互式分析环境及直接项目控制
询问智能体某个原生功能为何如此运行 REA 加受支持的原生提供程序 二进制文件及具体问题 智能体引导的发现、证据和解释
长期保留并完善分析项目 直接使用 Ghidra 导入的程序及分析者的修改 自主控制的持久项目流程
检查 Electron 模块或 IPC 路径 REA 的 JavaScript 流程 应用文件夹或 ASAR 无需原生引擎即可获得模块、关系和源码位置
用脚本执行可重复的原生分析 两者皆可,取决于所需控制程度 二进制文件及分析脚本或 CLI 请求 Ghidra 脚本或 REA 结构化 CLI 结果

什么时候 Ghidra 更合适?

当工作依赖持续的可视化探索、细致的分析者修改、自定义脚本或持久程序数据库时,直接选择 Ghidra。Ghidra 原生界面直接呈现分析项目。有经验的分析者可以检查指令和图表,无需将每一步操作转换为智能体请求。

通过 REA 使用 Ghidra,并不会把所有 Ghidra 功能都开放到 MCP。REA 提供程序文档介绍了已验证操作和主机限制。REA 文档中的无界面流程使用临时项目,不会打开你已有的用户项目。如果需要维护已有项目,应优先使用 Ghidra 直接界面。

Ghidra 也有自己的自动化和脚本流程。称 Ghidra 只能手动使用并不准确。REA 的区别在于跨目标类型共享智能体和 CLI 接口,而不是独占自动化能力。

什么时候 REA 是更合适的起点?

当具体问题需要从检查进一步走向实现时,REA 很有用。例如,智能体可以调查某项计算、定位相关指令和引用、解释规则,再编写一个小型实现供你测试。智能体的结论仍需与原始行为核对。

官方 DX-Ball 案例研究从声音调用追踪到位置转声像辅助函数,并用 C 重建该计算。项目报告了 3,205 个原始 x86 测试用例,以及全部 63 个编译函数字节一致。这些结果只属于该具体演示,不能证明 REA 的总体成功率,也不能证明其性能优于 Ghidra。

REA 还提供原生反编译之外的流程。对于 Electron 应用,静态 JavaScript 分析无需启动 Ghidra 即可识别模块和 IPC 关系。当调查涉及应用打包、JavaScript 和部分原生组件时,REA 是方便的入口。REA 目标表列出了各自前置条件。

如何通过 REA 使用 Ghidra?

安装 REA 提供程序文档支持的 Ghidra 版本和 JDK,再配置 REA 使用该安装。REA 配置可以记录已核实的现有路径,但不会替你下载或安装 Ghidra 或 Java。官方配置指南包含最新配置说明。

不要假设最新 Ghidra 发布版会自动兼容已安装的 REA 包。Ghidra 自身当前版本的要求与 REA 测试过的提供程序范围用途不同。截至本文日期,REA main 分支安装指南描述了 Ghidra 12.1.x 提供程序检查;选择版本前应查看该指南和已安装服务器的能力。

配置提供程序后,可运行针对性诊断:

npx -y rea-agents@latest doctor --provider ghidra --json

基于 Ghidra 的操作在首次查询时可能需要导入和自动分析时间。大型二进制文件可能需要更长的提供程序启动期限,而 MCP 客户端可能有自己较短的请求期限。诊断这种情况时,请参考文档中的期限与恢复指南。

哪些局限会影响选择?

REA 提供程序支持因主机和目标而异。其 Windows Ghidra P0 范围明确属于实验性支持,比 Ghidra 总体平台和格式支持更窄。请阅读 Windows 提供程序指南,不要仅凭 Ghidra 能手动导入某个文件就推断兼容性。

REA main 分支也可能描述比 @latest 安装的 npm 包更新的功能。某个软件包版本能运行,并不代表 main 分支的每项操作都可用。请检查发布边界以及已连接工具的 schema。

两种流程都需要判断。反编译伪代码不是原始源码,间接行为可能仍无法解析,编程智能体也可能误读正确证据。请结合相关指令、引用和受控行为检查来确认重要结论。

关于 REA 和 Ghidra,大家常问什么?

REA 能替代 Ghidra 吗?

REA 可以将 Ghidra 作为引擎使用,并不替代其完整交互式环境。选择适合任务的接口,也可以组合使用。

哪个工具免费?

REA 自有代码采用 MIT 许可证。Ghidra 是开源项目,有其公布的许可证和第三方声明。编程智能体模型访问,以及 Hopper 或 IDA 等可选商业提供程序,适用各自条款。参阅 REA 许可证和 Ghidra 许可证。

没有 Ghidra 能检查 JavaScript 吗?

可以。REA 的静态 JavaScript/Electron 流程使用 Node.js 和 npm,不使用原生反编译器。应用中的原生扩展属于独立分析目标,有自己的要求。

新手应该先试哪个工具?

学习汇编和手动二进制分析时,从 Ghidra 自身资料开始。学习以问题为导向的智能体调查时,从 REA Notes 示例或我们的 REA 配置指南开始。更小的目标和可核查的问题,能让两种方式都更容易评估。