夜雨聆风学习资料网

ARTICLE · 1186077

没有源码,AI 也能看懂软件?REA 把逆向工程带进了聊天框

没有源码,AI 也能看懂软件?REA 把逆向工程带进了聊天框

你在软件里点了一下“复制”,文字和格式就进入剪贴板。你在一款老游戏里击中砖块,声音又恰好从左侧或右侧传来。

这些功能看起来很普通。但如果没有源码,你能不能知道:按钮之后,程序究竟做了什么?

过去,普通用户往往只能猜,专业人员则需要在软件包、函数、调用关系和运行记录之间逐步追踪。现在,一个叫 REA 的项目,正在把这类调查工具接到 AI 代理身上。

它的全名是 Reverse Engineer Anything。名字很有冲击力,但本文不把它理解为“什么都能一键还原”。更准确的看点是:AI 不只根据描述回答,还能拿着工具,从实际软件里找线索。

先看两个项目方公开案例,再用能操作的演示理解它们的思路。本次另外实际操作了官网 Notes、恐龙速度与百分比演示,并用系统计算器做了按键对照;这些是界面操作,不是本机运行 REA 后完成的逆向分析。

一、从一次“复制”,追到软件内部的接力链

REA 的 Notion 案例,研究的是 Notion Desktop 7.6.1 的复制流程。项目方沿着页面侧接口、预加载包装、进程间通信,再追到主进程里的系统剪贴板写入,并保留了相关代码位置。官方 Notion 案例

不懂 Electron 也没关系。可以把它想成一次接力:你在界面里提出请求,中间层把消息传出去,另一个负责系统能力的部分接收并执行。

重要的不是 AI 说了一句“它用了剪贴板接口”,而是它能指出:从哪里开始找,消息怎样传,接收者在哪里,哪些代码支持这个判断。

这让“看起来像这么实现的”,向“有具体位置可以核对”迈了一步。

对产品经理而言,这种调查可以帮助理解一个功能的技术边界;对维护者而言,它可以帮助找到需要继续检查的位置。但仅仅追出这条路径,还不能声称已经理解了整个编辑器。

想亲手感受“点一下以后发生什么”,可以打开官网的 Notes 浏览器演示。本次实际点击 Export notes 后,页面显示导出了两条笔记,浏览器也收到了 CSV。它不是 Notion 客户端,不能用来证明 Notion 的内部实现,但适合把抽象的功能追踪问题变得直观。官方浏览器演示

二、老游戏的一个声音算法,为什么比“还原整款游戏”更值得看?

另一个案例来自 DX-Ball。项目方调查屏幕横坐标怎样变成声音左右位置参数:读取指令、追踪调用者、核对常量,再写出 C 实现。案例给出的验证包括 3,205 组行为对照,以及指定编译条件下匹配的 63 字节函数代码。官方 DX-Ball 案例

这些数字描述的是该案例中的特定函数验证,不是 REA 对所有软件的成功率,更不是“整款游戏已被完整复刻”。

我更愿意把它看作一个好的研究问题:范围小,输入清楚,输出能比较。找到一个计算式之后,还要问它在边界条件下是否一致,而不是让一段看起来通顺的代码直接毕业。

这也解释了为什么“从一个功能开始”往往比“帮我拆完整个软件”更有效。目标太大时,你很难判断 AI 到底回答了多少;目标具体时,你能建立一条可检查的证据链。

逆向分析的价值,不在于说得神奇,而在于把未知缩小成可以验证的问题。

三、REA 是模型、插件,还是反编译软件?

可以先记住三个角色:AI 代理负责提问与解释,REA 负责连接调查工作流,底层工具负责具体分析。

它通过 MCP 为支持这类连接的代理提供工具,也提供命令行入口。MCP 可以简单理解为代理与工具之间的一种连接方式,不是让模型凭空多出所有能力的按钮。REA 官方项目

不同对象需要不同路线。原生程序主要看函数、指令与引用;JavaScript/Electron 更关注模块、导入与进程通信;.NET 有托管程序集的元数据与指令;网页则可以从脚本、请求和指定运行观察入手。官方分析类型说明

这些名称不需要一次背完。先问自己手里有什么,再问适合用什么方法。一个已经解包的 JavaScript 应用,与一个原生可执行文件,并不是“丢进去同一个按钮”就能得到同样结果。

另一个容易忽略的细节是:如果你已经有完整、可读的源码,只想理解项目结构,通常先用普通仓库阅读与测试就够了。有逆向工具,不代表每次都应该绕一条更复杂的路。

官网还把恢复出的恐龙加速规则做成了可玩的教学游戏。本次实际点了播放、跳跃和调速,截图展示的是这个复现演示,不是原版 Chrome 游戏,也不是本文重新逆向得到的作品。恐龙速度实验室

四、真正的变化:从“给我一个解释”,变成“把依据拿出来”

普通聊天里,你可以问:“一个笔记软件大概怎么实现复制?”模型能根据常见设计给出合理解释。但合理,不代表它描述的就是你手里那一版软件。

调查真实对象时,问题应该换成:“这个版本的这个功能,由哪些文件或函数实现?请给出位置、关联关系,以及仍然不知道的部分。”

REA 的吸引力就在这里:让代理的分析贴近选定对象,而不是停留在一般知识。官方 Notion 页面展示了发现与源码范围之间的联系,读者可以顺着位置继续核对,而不只接受最终结论。

阅读这类输出时,我建议分三栏:

看到的事实:文件里实际出现什么,工具记录到了什么。

有依据的推断:哪些线索共同支持一个解释。

尚未确认:缺少运行观察、服务端逻辑或其他版本材料,因此暂时不能判断什么。

例如,发现一个导出相关的模块,是线索;追到它的调用路径,是更强的依据;确认用户操作后实际生成了什么文件,则需要相应验证。不要把这三个层次压缩成一句“功能已经完全看懂”。

对普通用户来说,最实用的判断方法是:如果报告只剩流畅的故事,却没有可追踪的位置和限制,先不要把它当成研究结论。

本次在 Chrome 开发者工具里观察 Notes 的导出动作,确实看到了 notes.json 请求与 200 状态。这里的记录来自浏览器实际操作,不是 REA 工具输出;它能确认这一轮点击发生的请求,不能据此判断整个应用已被完整分析。

五、想体验,先搞清“装了 Skill”与“工具连上”不是一回事

官方入口是 morluto/rea、rea.tools 与 rea-agents npm 包。安装前核对来源,不要仅凭相似名字或一份复制的介绍下载不明程序。

官方安装流程的关键不是敲完命令就结束,而是审阅配置变更、连接选定代理,并在完成后重启或重新连接。下面只是文章展示的命令,本文没有执行安装:

npx rea-agents@latest setup --client codex --dry-run --json

这一步用于查看拟议变更,不表示当前会话已经获得 REA 工具。**Skill 提供使用说明,MCP 连接提供实际调用入口,两者不能混为一谈。**具体设置以当前官方安装文档为准。安装与连接说明

底层分析环境也要按目标准备。深度原生分析可能需要 Hopper、Ghidra 或 IDA;静态 JavaScript 与 .NET 检查不需要同样的原生分析引擎。主机系统、工具许可和目标格式都会影响可用路线。官方引擎说明

因此,遇到工具不可见时,不要马上重装一整套软件。先分清是说明文件存在、连接未生效,还是特定引擎缺失。它们不是同一个问题。

六、第一条任务,建议这样问

别从“帮我复制这个软件”开始。给它一个你有权分析的对象,再指定一个明确功能,以及你要怎样的依据。

下面是一份可复制的任务模板,不是本次执行记录:

目标:分析我拥有或已获授权的软件副本。路径:[填写本地目标路径]问题:只调查“导出 CSV”这一项功能如何实现。先判断对象类型与需要的分析路线。默认先做静态检查,不启动目标、不联网、不修改原件。如需运行程序或增加工具,先说明原因并等待批准。请交付:1. 功能路径与相关模块或函数;2. 支持结论的文件位置、地址或观察记录;3. 已确认事实、推断、未知项;4. 建议的验证方法与局限。

这个模板有意把“做什么”和“不做什么”一起写清楚。目标文件不是授权书,工具能力也不会自动变成操作许可。

也可以把问题缩小到一个按键。本次在系统计算器里输入 200+10,按百分号后第二个数变成 20,再按等号得到 220;官网的复现演示也可操作得到这一结果。这只是这组输入的界面对照,不是对全部规则或内部代码的验证。

官方指南同样采用从一个功能出发的路线,例如导出请求或某个函数计算。REA 调查指南

拿到第一轮结果后,再决定下一步:需要补充哪个文件,是否值得观察运行行为,是否有必要编写一个独立的小测试。这样比不断追加“再深入一点”,更容易控制范围和成本。

七、四个不能被工具热度盖过去的限制

**第一,伪代码不是原始源码。**它是分析工具与后续解释产生的可读表达,不能默认保留原来的变量名、注释和设计意图。好看,不等于无误。

**第二,静态结构不是完整运行行为。**找到调用关系,并不等于验证了所有输入、异常、权限与服务端条件。拿到桌面软件包,也不代表同时拿到了它连接的服务端实现。

**第三,本地分析不等于结果绝不离开本机。**官方 FAQ 说明,REA 在本机分析目标,但代理会接收结果,模型提供方的数据政策适用于这些结果。涉及商业机密、账号信息或个人资料时,应先确认允许发送什么。官方数据说明

**第四,能研究不等于能任意复制和分发。**项目明确面向合法研究、教育、互操作、软件保存,以及自有或授权对象;商业分析工具也有独立许可。不要把工具名称里的 Anything 理解成对任何目标、任何用途的授权。项目责任使用说明

这些边界并不会让工具失去价值。相反,知道自己拿到了什么证据、还缺什么证据,才不会把一次有用的调查,误包装成一次不存在的全面突破。

下面的三帧来自本机系统计算器的实际按键操作。它们能说明这个输入如何变化,却不能替代内部实现分析。这正是“看到运行结果”和“证明实现机制”之间的差别。

结尾:它不是“万能拆解器”,而是一套调查能力

如果你在维护自己的旧软件、研究合法的互操作方式,或者想弄清一个已发布应用的局部功能,REA 值得关注。

如果你只是写文章、做表格,或者手里已经有完整源码且需求很清楚,它未必是你需要优先安装的工具。选工具,不必从“热门”开始,而可以从“我遇到了什么未知”开始。

我认为 REA 最值得讨论的变化,不是让每个人突然拥有专业逆向能力,而是让软件研究的入口更接近自然语言,同时把原本藏在结论背后的材料重新放到桌面上。

但入口变简单,验证不会因此消失。仍然要选对目标、问对问题、核对证据,并为必要的运行和修改设置边界。

没有源码,不一定只能猜;有了 AI,也不能省掉验证。

这句话,比“一键还原任何软件”,更适合拿来理解 REA。


相关学习资料