侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计创建 39 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

28 万 Star 的 REA 爆火:AI 真的可以逆向任何软件了吗?

猿有味
2026-10-16 / 0 评论 / 4 点赞 / 3 阅读 / 0 字

cover-anime.webp

摘要

假如给你一个八音盒,没有图纸,让你弄清它为什么会唱歌,你会怎么做?

大概是拆开外壳,看齿轮怎么转、滚筒怎么碰到音梳,再试着做出相同的效果。

软件逆向也有点像这样:拿不到源码,就从已经做好的程序入手,研究它怎样工作。

最近受到关注的 REA,全名叫 Reverse Engineer Anything。它想做的,是让 AI 帮你完成这类研究。写作时该项目已有 283,326 个 Star,约 28.3 万,数据日期为 2026 年 10 月 16 日。

名字很有气势。但 AI 真能拆明白任何软件,还能照着做一套吗?

看完官方案例,我的判断是:它让研究软件更容易下手了,“任何软件”仍然需要打个问号。

一、REA 给 AI 配了一张工作台

以前把一个陌生程序交给 AI,如果它只能聊天,给出的通常是分析建议。要深入程序内部,还得有人操作工具、查文件,把结果再喂回来。

REA 把一部分操作接了起来:AI 可以调用分析工具,查看结果,再决定往哪里继续查。

用八音盒打比方:

  • AI 像研究者:看到一个齿轮,会继续问它带动了什么。
  • Ghidra、Hopper、IDA 等工具像检测设备:帮助观察程序内部。
  • REA 把设备接到工作台上:让 AI 能调用工具、读回结果。

tools-anime.webp

研究者需要工具,也需要根据观察决定下一步查什么。插画为生活比喻。

实际使用时,不同程序走的路径也不同。JavaScript / Electron 应用可以先读取文件、分析代码;对于已经编译成机器指令的程序,深度分析需要配合相应的底层工具。REA 项目说明

你可能见到的 MCP,可以简单理解成“AI 调工具的接口”。REA 也提供命令行入口。CLI 文档

workflow-illustrated.webp

沿箭头看一圈:提出问题、调用工具、拿回证据,再决定下一步。图中的底层工具按需选用。

对使用者来说,更值得关心的是:它的结论能不能指回具体代码或指令。 就像维修师傅说“这个齿轮有问题”,至少得让你看到是哪个齿轮。

二、打砖块游戏,能看出它到底帮了什么

官方 DX-Ball 案例研究了一个很小的问题:球打中左边的砖块,声音为什么会偏左?打中右边,又怎样偏右?

game-anime.webp
左右两幅情景演示横坐标与声音方向的关系,为原理插画,并非游戏截图。

研究过程也很具体:先找到相关函数,再追调用它的代码,读取里面的常量,逐步弄清“横坐标怎样换成声道偏移”。

有个细节很有意思:工具第一次把机器指令“翻译”成代码时,结果并不完整。继续看原始指令,才补齐输入和计算过程。

这说明,工具第一次给出的结果,也要继续核对。

官方随后对重建函数做了两类校验:

  • 3,205 组行为用例:比较原程序与重建代码的返回值。
  • 63 字节函数匹配:使用指定旧编译器,并处理经审核的地址调整后,重建代码编译出的这段机器指令与原程序匹配。

这些结果对应的是那段声音计算函数。DX-Ball 官方案例

validation-illustrated.webp
这是常见的行为验证思路。当前用例通过后,还要扩大输入范围;字节匹配则需要另外比较编译产物。

就像弄清了八音盒里一个齿轮的尺寸和作用,接下来还得研究其他零件,才能谈整个八音盒的重建。

另一个 Notion 案例,追的是桌面应用的剪贴板调用链:复制请求如何从页面传到主进程,再写进系统剪贴板。它能帮助理解这项功能的内部路线;整套 Notion 的编辑、同步和协作能力,还远远超出这条路线。Notion 官方案例

以上是官方公开案例,本文未独立复测。

三、“逆向任何软件”,卡在哪里?

1. 看得到成品,未必看得到后厨

有些功能主要在服务器上运行,客户端只负责发请求、接结果。

这就像在餐馆吃到一碗面。你能尝味道、看配料,也能猜做法,但仅凭这一碗面,很难确定后厨完整的配方和流程。

boundary-anime.webp
客户端能提供部分线索,服务端内部实现可能仍然不可见。

AI 也受手头材料限制。客户端和几次请求响应,通常不足以确定服务端的完整算法。

2. 拆得开,也可能看不明白

有的软件会打乱代码,或给程序再包一层保护,也就是常说的“混淆”“加壳”。好比拆开机器后,发现零件标记被磨掉,有些部件还藏在另一层外壳里。

这会增加分析难度。REA 能帮忙调用工具,具体能走多远,仍然取决于目标、环境和工具能力。

而且,反编译得到的代码也不保证恢复原作者的写法。编译时丢掉的注释、命名和部分结构,不能指望原样找回来。

3. 做出相同效果,还要经得住反复试

正常输入时结果相同,只能说明这一种情况对上了。

空数据会怎样?连续操作会怎样?网络断了呢?版本升级后呢?这些都要另查。

就像照着做出一个会唱歌的八音盒,还得检查会不会卡齿、跑调,用久了能不能正常工作。完整软件还涉及部署、兼容和错误恢复,验证范围更大。

所以,看到“AI 已经逆向某软件”,我会先看两件事:还原了哪部分?拿什么证明?

四、普通开发者,怎么试才容易看出效果?

先选自己拥有或获授权分析的材料,从一个小功能开始。

比如:“点击导出后,文件写到了哪里,里面有哪些字段?”这个问题有明确终点,方便检查 AI 有没有找对。

环境和配置按官方入门指南准备。下面是连接 REA 的 setup 入口,运行前先确认 Node.js 版本符合文档要求:

npx rea-agents@latest setup

选择使用的客户端,查看配置变更,完成后重新启动客户端。然后可以这样提问:

用 REA 分析我提供的本地示例,追踪“导出”功能。
说明从哪里进入、经过哪些模块、最终写出什么文件。
每个关键结论附上文件位置或指令地址,并标明尚未确认的部分。

第一轮能把这条路线查清楚,就有收获。后面再根据缺少的证据,决定是否需要运行观察、补充测试或扩大范围。

还有两点要记住:分析内部软件前,确认工具结果会通过 agent 发送到哪里;使用目标软件和商业分析工具时,确认自己有相应授权。REA 的本地分析并不等于整条 AI 链路都离线。项目 FAQ、使用声明

五、这次值得期待的变化是什么?

很多开发者并不打算复制一个软件,只是想弄清一个老程序的行为、查明某项功能的实现,或者给手头的兼容工作找些线索。

REA 值得试的地方,就在这里:你提出一个具体问题,AI 可以带着工具往里查,并把发现交回来复核。

至于“任何软件”,先别急着下结论。让它把你关心的那一个功能查明白,比看一段热闹演示更有用。

参考资料

4

评论区