ARTICLE · 1184682
REA开源之后:AI开始拆解软件,程序员该关注什么?
只看界面猜实现
一个功能,怎么运转
先找证据再下结论
REA功能 · 入门流程 · 工程思考
Reverse Engineer Anything
精选三个看点与结语
滑动查看
PART 01
它的作用
研究机制
PART 02
目标与边界
先认目标
PART 03
第一次使用
操作流程
PART ///
写在最后
留下证据
看懂一个功能,最好拿得出它怎样工作的证据。
以前让AI仿一个功能,常见的起手式是发张截图:照这个界面做一个。
页面可能很快就有了。可搜索为什么快、数据存在哪里、点击按钮后发生什么,截图回答不了。外观之后,还有实现机制。
REA让人感兴趣的地方就在这里。它把逆向分析工具接到编码Agent手里,让Agent有机会检查应用包、追踪相关逻辑,再带着证据解释一个功能。
这个项目叫Reverse Engineer Anything,官方仓库是morluto/rea,npm包名是rea-agents。它支持MCP接入和命令行使用,REA自身编写的代码采用MIT许可。项目介绍
我更想讨论的,是这种能力开放以后,我们怎样研究已有软件,以及怎样把研究结果转成自己的工程方案。
本文按2026年10月14日可见的官方仓库和文档整理。功能边界以安装版本、操作系统和分析引擎为准;后面的搜索案例是自拟练习,并非对某款商业软件的实测。
01
PART
它给AI的,是分析工具和证据
TOOLING · 作用
可以把REA理解为编码Agent的逆向分析工具接口。Agent负责理解问题和组织调查,REA提供相应工具,分析引擎处理它们擅长的目标;返回结果包含证据与限制。也可以直接通过CLI调用这些工作流。项目说明
比如你问:“这个应用的搜索是怎么做的?”真正有价值的调查会继续问:搜索入口在哪里,查询参数怎么传递,经过哪些模块,有没有调用本地原生组件,哪些关系目前只能推测。
这里要把三个角色分清。
所以,装好REA不等于装好所有分析引擎。读JavaScript应用包,与分析原生二进制,需要的环境并不一样。
它也不应被理解成“任何软件都能恢复成原始源码”。反编译、重建和AI解释可能不完整或出错,仍需检查底层证据。项目的使用说明明确保留了这些限制。结果边界

02
PART
它能研究哪些东西
TARGETS · 范围
不必背完整工具目录。先看你手里拿到的是什么,再找对应路线。
这张表列的是可用的调查方向,不是每种目标都能完整分析的承诺。
JavaScript与Electron的功能追踪,可以从模块、字符串、路由或IPC通道等线索出发;版本比较也会保留匹配依据与未知项。它不会把静态可达关系直接当作实际执行。应用工作流
原生分析要配置相应引擎,例如Ghidra、Hopper或IDA。拿到伪代码之后,还要结合调用、数据和上下文解释,伪代码不能直接当作原工程。原生调查指南
.NET这条路线重点是元数据和CIL等信息,不宜笼统说成“原样还原C#项目”。Android APK则需要对应JADX工具和完整JDK;Windows支持还取决于包版本提供的配套能力。.NET指南、Android指南
浏览器观察也有自己的连接条件和范围。看到一次网络请求,可以研究这次请求的内容和来源;没有拿到的服务端实现,仍然不能凭前端表象补出来。浏览器观察指南
如果已有完整源码,只是想理解普通仓库结构,先用常规代码阅读工具即可。REA更有特色的场景,是需要研究已交付的软件材料,或需要补充源码之外的行为证据。
03
PART
第一次上手,先选一个小问题
GET STARTED · 上手
下面做一个自拟练习:研究自己拥有或明确获准分析的Electron示例应用,看看它的搜索功能怎样工作。这里只给操作路径,不虚构分析结果。
第一步|准备目标和问题
选一个明确路径,例如自己制作的应用包。下面的路径只是占位示例,请换成真实路径。
D:/rea-lab/SampleNotes/resources/app.asar
第一次别要求“完整分析这个软件”。先问搜索输入怎样传到查询逻辑。问题越具体,越容易知道调查有没有回答到位。
同时写清范围:只做静态分析,不运行目标,不连接账号,不修改应用。需要运行时观察时,再确认环境与具体动作。
第二步|检查环境,连接客户端
官方列出的Node.js范围为22.x中的22.19及以上、24.x中的24.11及以上,或26及以上,并需要npm。它不会替你升级Node.js。运行版本声明、安装说明
node --version
npm --version
npx rea-agents@latest setup
安装流程中,选择你实际使用的客户端,查看拟修改的配置与技能路径,再确认设置。完成后,重启提示中列出的客户端。安装流程
别漏掉一个区别:技能说明与MCP连接是两件事。前者告诉Agent怎么调查,后者让它能调用REA。只复制一个技能文件,不能证明服务器已经连接。
如果只做静态JavaScript分析,不需要先装原生反编译引擎。Linux还要满足文档中的进程检查前提;原生二进制、APK等路线另有依赖。环境说明
第三步|把调查任务说完整
下面这段可以改路径后交给支持REA的编码Agent。它是本文设计的任务模板。
请用REA分析我指定的Electron应用包。
目标路径:D:/rea-lab/SampleNotes/resources/app.asar。
本次只研究搜索功能,只做静态分析,不运行或修改目标。
先确认目标身份,再查看应用分析摘要。
定位搜索相关的界面入口、模块、查询参数和IPC线索。
根据实际返回的线索继续追踪,不猜测证据编号。
每条主要结论说明证据来源及位置。
将直接观察、静态推断和仍然未知的内容分别列出。
最后用普通开发者能理解的话解释流程,列出证据缺口。
若相关工具不可用,说明具体缺少什么,不虚报完成。
分析完成后,别先看报告有多长。先看它是否回答了你的问题:入口在哪里,参数是什么,数据往哪里走,哪些环节还没确定。
第四步|也可以先从CLI看结构
官方CLI支持直接分析提取后的应用目录或ASAR。下面是Windows路径示例,其他系统改成相应绝对路径。CLI指南
npx -y rea-agents@latest analyze-javascript-application "D:/rea-lab/SampleNotes/resources/app.asar" --json
这里的-y用于npm包下载确认,不替代REA设置中的配置确认。这条命令是静态分析入口,不是运行示例应用。
大应用的完整结果可能很长。让Agent读取摘要、模块分页或某个模块的细节,复用已完成的分析,通常比反复重跑整包更合适。具体可用选项以安装版工具说明为准。结果读取与复用
第五步|连接不通时,诊断对应部分
如果你用的是Codex,可以检查它的REA注册;其他客户端应换成安装文档列出的客户端标识。
npx -y rea-agents@latest doctor --client codex --json
缺客户端注册、缺原生引擎、目标路径错误,解决方式不同。别把所有失败都当成重新安装。官方文档也提醒,全环境检查不健康,并不必然意味着你当前需要的工作流不可用。诊断说明
@latest会随发布变化。重要调查应记录实际REA版本、目标版本和文件身份;还要注意,主仓新增能力不一定已经进入你安装的发布包。

04
PART
看报告,别被“像答案”骗了
EVIDENCE · 证据
假设分析发现一个带有search字样的模块。能确认的是:在这份材料的这个位置,存在相应内容。能不能进一步说“它实现了全文搜索”,还得看后续证据。
我建议把报告按三列检查。
这些示例是在教你怎么读报告,不是REA已分析出的搜索结论。
官方应用工作流明确区分静态观察、关系推断、运行时观察与因果证明;版本比较也不会因为扫描不完整就判定某个模块消失了。证据边界
特别要留意两种跳跃:代码里有,不等于运行过;当前样本没看到,也不等于整个软件没有。
可复查的报告,至少应该交代目标身份、主要证据、推断依据、未覆盖范围和仍未回答的问题。需要长期保留时,可以让Agent将证据导出到你指定的文件位置;REA提供Evidence导入、导出和比较相关能力。

05
PART
看懂之后,怎样重建一个功能
REBUILD · 重建
先把调查结果写成功能规格,再让AI实现。不要把报告里一句“可能使用本地索引”,直接变成必须采用的架构。
继续用搜索练习举例。确认过的行为,可以写进规格;没有证据的内部细节,可以列为自己的实现选择。两者分开,后续才容易讨论。
请根据已经确认的功能行为,为我的项目实现搜索原型。
先列出有证据支持的行为,以及我方需要自行决定的设计。
采用我项目已有技术栈,明确数据输入、输出和异常处理。
不要把分析推断写成目标软件的确定实现。
先提出最小实现范围和测试条件,再编写代码。
交付时说明已实现行为、测试结果与未覆盖情况。
搜索原型做出来之后,我会先用以下自拟清单检查,而不是只看页面像不像。
这份表验证的是你声明要实现的范围。通过有限测试,不代表与原软件全局等价。
真正可用的交付,还要考虑集成、权限、异常、维护和回归。REA提供调查能力,编码Agent可以辅助实现;工程验收仍然需要单独做。
06
PART
开源之后,我更在意这三件事
THOUGHTS · 思考
软件研究的入口,可能继续向任务语言靠近
过去研究一个功能,往往先要熟悉几套工具,再把结果串起来。REA把这些能力放进Agent可调用的工作流,让使用者能够从“我想弄清什么”开始。
我的判断是,提出好问题的价值会更突出。工具能帮你搜线索,范围怎么定、缺口怎么补、什么证据够用,仍然需要判断。
这也给团队培训一个实际方向:第一次练习不必比谁的工具最多,可以比谁能把一个结论讲清楚,并让同事复查。
“源码不可见”的分量,值得重新思考
当应用包和运行行为能够被工具辅助研究,部分实现细节可能更容易被理解。但这不意味着产品竞争只剩“谁复制得快”。
在我看来,数据质量、服务能力和持续交付,依然是需要长期积累的部分。能做出一个相近的搜索原型,与维护一个多人协作、长期稳定的产品,是不同的工作量。
对自己的软件,也值得开始记录:哪些关键行为有测试、哪些接口依赖约定、哪些结论必须靠真实运行验证。软件的可研究性提高以后,清楚的工程边界同样有用。
开放能力,更需要保留判断过程
我更愿意把REA的意义看作让调查过程有机会被复查。如果结论留下了目标、位置、证据和未知项,下一个人就能继续研究,而不必从一句口头判断重新开始。
不过,开源不等于使用没有成本。模型调用、分析引擎、运行环境和人工验证,都可能构成成本。商业引擎仍有自己的许可条件;REA的MIT许可不替你取得这些许可,也不授予目标程序或数据的使用权。许可与使用说明
另外,分析在本地运行,不能直接推出整个Agent链路都不向外传数据。材料如何进入模型上下文、调用哪个服务、怎样保存结果,需要检查你使用的客户端和配置。项目也提醒,运行时与网络操作可能产生外部影响。

///
LAST
写在最后
THE END · 结语
第一次用REA,我建议把目标定小一点:选一个自己有权研究的应用,只回答一个具体问题,留下能够复查的证据。
解释清楚一个搜索入口、一个数据流或一次版本变化,就已经是有用的进展。之后再决定是否补运行时观察,是否值得重建原型。
工具让调查更容易开始。最终能带回项目里的,是讲得清楚、查得到依据、验得过结果的工程认识。
来源与阅读范围
本文依据官方README及安装、CLI、应用工作流、原生、托管代码、Android和浏览器文档整理。功能介绍来自文档;搜索练习、提示词、验收清单和开源影响判断为本文设计与思考。
• REA官方仓库
• 安装与配置
• CLI与Evidence
• JavaScript与Electron工作流
• 原生分析指南
• 浏览器观察
• 使用与结果边界
留一个具体问题
如果你准备用REA,最想弄清哪个软件功能?欢迎在评论区写下问题和你希望得到的证据,去掉账号、文件内容及其他敏感信息。
如果已经用过,也欢迎分享一个“找到了线索,但还不能下结论”的例子。这样的边界,往往比一句“成功复刻”更值得讨论。
我是 Tiger,关注我,加我薇:hhhxy666666, 备注AI,进入AI技术交流群。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。
THANKS FOR READING















































































