ARTICLE · 1209878
没有源代码,AI 也能看懂软件?这个开源项目,让 Agent 成为逆向分析助手!
摘要: 遇到一个没有源码的软件,想知道它的功能是怎么实现的,怎么办?开源项目 REA(Reverse Engineer Anything)把逆向分析能力接入 AI Agent,让 AI 从二进制文件、代码线索和调用关系中寻找证据,帮助开发者理解软件、分析功能,并探索自己的实现方案。
你有没有遇到过这样的情况:
看到一个产品的功能设计得很好,想研究它的实现方式,却找不到源代码;
接手一个历史项目,只剩下可执行文件和有限的技术资料,没人能说清内部逻辑;
面对一个复杂的桌面软件,想弄明白某项功能究竟调用了哪些模块,却只能一点点查找、分析。
以前,这类工作往往需要熟悉汇编、反编译器、调试工具和底层系统知识的工程师,花费大量时间手动追踪。
现在,AI Agent 正在进入这个领域。
今天介绍一个值得关注的开源项目:REA(Reverse Engineer Anything)。
它不是简单地让 AI 阅读源代码,而是为 AI Agent 提供一套软件逆向分析工具,让 Agent 能够调查应用程序、寻找代码线索、追踪函数关系,并基于分析证据解释软件的工作原理。
01 什么是 REA?为什么值得关注?

REA 的全称是 Reverse Engineer Anything,可以理解为“逆向分析各种软件”。
它的核心思路很有意思:
不只是让 AI 回答软件可能是怎么工作的,而是让 AI 使用专业工具去调查,再根据找到的证据作出解释。
传统 AI 编程工具通常擅长阅读项目源代码、编写函数和修改文件。
但如果面对的是一个已经编译好的程序,事情就不一样了。
例如,手头只有一个 Windows 可执行文件、一个 macOS 应用,或者一个已经打包的 Electron 软件。你可能无法直接查看原始源代码,也很难仅凭软件界面推断出内部实现。
REA 就是为这类调查任务提供工具支持的。
它通过 MCP(模型上下文协议)将分析能力接入 AI Agent,让 Agent 可以调用底层分析工具,逐步收集线索、追踪程序结构,并整理出有证据支持的分析结论。
这里需要注意:REA 不会神奇地恢复出原作者的完整源代码,也不能保证任何软件都能被完全理解。 它的价值在于帮助开发者更有效地开展调查、缩小问题范围,并理解现有软件的部分实现机制。
02 REA 能做什么?不只是反编译
REA 的能力并不局限于某一种文件格式或某一种开发语言。项目将多种软件分析工具整合进统一的工作流中。
① 分析二进制文件
面对编译后的程序,REA 可以借助相应的分析工具获取函数信息、字符串、汇编指令、伪代码和调用关系等线索。
例如,你想了解某个程序的登录功能,可以从相关字符串、函数符号和代码引用入手,逐步追踪可能的验证逻辑。
② 追踪函数与调用关系
找到一个疑似关键函数,并不意味着已经理解了它。
真正重要的是继续调查:
哪些函数会调用它?
它又会调用哪些其他函数?
输入参数如何传递?
关键分支和返回结果有什么含义?
REA 提供相关工具,帮助 Agent 把零散线索串联起来,而不是停留在孤立的代码片段上。
③ 分析 JavaScript、Electron 和 .NET 应用
对于 JavaScript 项目、Electron 应用和 .NET 程序,REA 还提供相应的分析能力。
例如,针对打包后的 Electron 应用,可以分析模块、依赖导入及主进程与渲染进程之间的边界;针对 .NET 程序,则可以借助相应工具调查程序集、元数据及相关代码结构。
不同目标的分析深度和依赖条件并不相同,需要根据实际对象选择合适的工具。
④ 结合运行时证据理解软件行为
静态分析能够告诉我们程序中存在什么代码线索,但不一定能证明软件运行时一定会走哪条路径。
REA 也在整合运行时观察、应用行为追踪和证据记录等能力,以便把静态分析结果与实际行为联系起来。
这类能力对于调查复杂应用、排查行为异常以及比较不同版本的软件尤其有价值。
简单总结:REA 想做的,是把原本分散在多个工具中的分析能力,整合成 AI Agent 可以持续执行的一套调查流程。

03 最有意思的地方:一句需求,逐步追踪到代码
来看一个更具体的例子。
假设你正在开发一款笔记软件,发现另一款笔记应用的离线搜索功能做得很好。
你希望弄明白它是如何工作的,并为自己的项目实现类似功能。
过去,你可能需要:
找到目标应用的相关代码或二进制文件。
使用反编译工具分析程序。
搜索与搜索功能有关的字符串和函数。
查找函数之间的引用关系。
追踪核心逻辑与数据处理流程。
根据分析结果重新设计自己的实现方案。
这个过程不仅耗时,还要求开发者具备一定的逆向分析经验。
而使用 REA,你可以尝试把调查任务直接交给支持它的 AI Agent。
例如,向 Agent 提出这样的要求:
研究这款笔记应用的离线搜索功能。
找出与搜索有关的关键函数,追踪它们之间的调用关系,解释搜索索引、查询处理和结果返回的实现机制。
请提供支持分析结论的证据,并指出无法确认的部分。最后,结合我的 TypeScript + SQLite 技术栈,给出实现类似功能的设计方案。
接下来,REA 可以为 Agent 提供一条逐步调查的路径。
第一步:识别目标程序。 了解待分析文件的基本信息和结构。
第二步:寻找关键线索。 搜索相关字符串、函数名称和符号信息。
第三步:追踪引用关系。 找出线索与其他函数之间的联系。
第四步:理解关键代码。 结合调用图、反编译伪代码等信息分析程序逻辑。
第五步:形成实现方案。 Agent 根据已有证据,结合你的技术栈,设计自己的功能实现。
这里有一个重要区别:
REA 负责帮助 Agent 调查目标软件;Agent 则利用调查结果继续编写代码、修改项目和运行测试。
因此,REA 并不是“一键复制任何软件”,而是让 AI 有机会从软件分析走向有依据的功能重建。

04 REA 与普通 AI 编程工具有什么区别?
两者并不是相互替代的关系,而是侧重点不同。
举个简单的例子:
如果你已经拥有一个完整的 Java 项目源码,想增加一个接口,普通 AI 编程工具通常就能胜任。
但如果你想研究一个没有源代码的桌面程序,弄清某个功能背后的实现机制,那么普通的源码编辑工作流可能就不够了。
REA 的价值,在于为 AI Agent 补上软件逆向分析这一层能力。
05 如何上手?先把 REA 接入你的 Agent
REA 的官方仓库提供 CLI、MCP 服务和配套工作流说明。
第一步:准备运行环境
根据项目当前 README,基础环境需要满足对应版本要求:
Node.js 22.19 及以上的 22.x 版本,或 24.11 及以上的 24.x 版本,或 26.x 及以上版本。
npm,以及你准备使用的 AI Agent。
如果涉及原生二进制的深度分析,还需要根据目标配置 Hopper、Ghidra 或 IDA 等相应工具。
注意:不同分析目标的依赖并不相同。例如,部分 JavaScript 静态分析能力不需要安装原生反汇编引擎。
第二步:安装并配置
可以先使用官方提供的安装入口:
npx rea-agents setup按照提示选择要配置的 Agent,检查安装计划并确认修改。
安装完成后,按照提示重启相关客户端,使 MCP 配置生效。
如果希望长期使用命令行工具,也可以选择全局安装:
npm install --global rea-agentsrea setup这两种方式选择一种即可。安装前建议查看官方文档,确认当前版本、目标客户端和本机环境的兼容性。
第三步:选择一个合法授权的目标进行实验
第一次尝试,不建议直接挑战复杂的商业软件。
可以先选择自己开发的小程序、自己编译的测试程序,或者明确获得授权的分析对象。
然后让 Agent 先调查目标的基本结构,再逐步追踪一个具体功能。
例如:
请使用 REA 分析这个测试程序。1. 识别程序的基本结构。2. 搜索与登录流程相关的字符串和函数。3. 追踪关键函数的调用关系。4. 根据现有证据解释主要执行路径。5. 区分已经证实的结论与推测。6. 输出分析报告,并说明还需要验证的问题。建议先从静态分析开始,再根据需要增加更深入的分析步骤。
提醒: 安装 REA 并不意味着所有分析引擎都已安装,也不代表所有分析功能都可以立即使用;具体能力取决于目标文件、分析工具、操作系统及相应配置。
06 哪些场景值得尝试?
我认为,REA 对以下几类开发者尤其有参考价值。
软件开发者: 研究自己有权分析的软件,理解复杂程序的内部结构,为功能重建或技术迁移提供线索。
技术负责人和架构师: 调查历史系统、理解缺少文档的模块,辅助技术选型和系统改造。
安全研究人员: 在获得合法授权的范围内分析程序行为、追踪可疑逻辑,并整理可复核的技术证据。
开源项目研究者: 学习逆向分析流程,研究编译产物的结构,以及 AI Agent 如何协调专业分析工具。
AI Agent 开发者: 研究如何通过 MCP 将专业工具封装为 Agent 可调用的能力,让 Agent 不只是生成文本,还能执行有步骤、有证据的调查任务。
需要强调的是,逆向分析应当遵守适用的法律法规、软件许可和授权范围。REA 的技术能力并不意味着可以绕过访问控制、侵犯知识产权或分析未经授权的目标。
07 我怎么看 REA:AI Agent 正在从“写代码”走向“研究软件”
过去,我们使用 AI 编程工具,更多是在给定需求和源代码的情况下,让 AI 帮我们写函数、修改文件、修复 Bug。
REA 展示了另一种可能性:
先让 AI 调查一个系统,理解它能确认的实现机制,再利用这些信息完成后续开发。
这种模式的意义,不只在于逆向分析本身。
它还体现了一种值得关注的 Agent 设计思路:
通过 MCP 接入专业工具。
把复杂任务拆解成一系列可执行的调查步骤。
根据前一步的结果决定下一步要查什么。
保存证据,明确结论的可信程度和限制。
将分析结果交给后续的代码实现和测试流程。
当然,工具调用再丰富,也不能保证 AI 一定理解正确。遇到符号被剥离、代码混淆、复杂运行时行为或缺少必要依赖的情况,分析仍可能受到限制。
因此,真正可靠的使用方式不是让 AI 给出一个看似完整的解释就结束,而是要求它说明证据来自哪里、哪些结论已经验证、哪些问题仍然未知。
这也是我认为 REA 值得关注的地方:它尝试让 AI 从“凭上下文回答”,走向“通过工具调查,再根据证据回答”。
08 项目地址与延伸阅读
如果你对 AI Agent、软件逆向分析或 MCP 工具集成感兴趣,可以从官方仓库开始:
🔗 REA GitHub:https://github.com/morluto/rea
建议优先阅读 README 中的快速开始、工作原理、支持的分析目标及工具目录,再选择一个自己熟悉、且有权分析的程序进行实践。
欢迎在评论区聊聊你的想法。
关注我们,持续分享 AI Agent、开源工具、软件工程与企业智能化实践。















































































