闭源软件正在变成可读规格:11步逆向流程,和它没说的边界
REA 加 Opus 5.5 把二进制拆成伪代码、变量名和行为规格。流程能跑通,但混淆、合规和模型限制才是决定成败的地方。
2026年10月7日,Replit CEO Amjad Masad 发了一条推文,说 AI 驱动的逆向工程和反编译正在让软件事实上开源。评论区里,开发者 @morluto 贴出 REA 项目。文章称它几天冲到 11 万 GitHub star。项目地址:https://github.com/morluto/rea
先把概念说清楚。闭源软件发给你的是编译后的机器码,人很难直接读。逆向工程工具把机器码反汇编,再反编译成接近 C 的伪代码。AI 不直接运行反汇编器,它通过一个中间层提问,中间层回传地址、字节、伪代码和调用点。REA 做的就是这层 MCP 工具,底层接 Hopper、Ghidra 或 IDA。分析在本机跑,文章称只有模型需要推理的发现会上传,每个结论标注观察、推断或未知。
这套流程解决了一个很具体的痛点:多数人打开十六进制编辑器,滚二十分钟就关掉。他们不知道先加载什么工具,也不知道怎么把一墙汇编变成能重建的规格。文章把过程拆成 11 步。核心不是让模型随便读二进制,而是把逆向工程拆成可验证的工程流程。
第一步是路由。Electron 应用的 JavaScript 可能就在文件里,不需要一上来就开反汇编器。REA 会按目标类型选工具,文章说有 20 种目标类型。第二步是侦察,先看文件类型、函数数量、字符串和交叉引用。字符串里有网址、报错、功能名,能快速判断应用做什么。一个被调用 147 次的函数是架构核心,被调用 2 次的小助手可以往后放。
第三步反编译热点函数。伪代码会有 var_28 这类名字,逻辑也乱,但可读。第四步让 Opus 5.5 注释和重命名变量,解释函数目的,标出原应用留下的 bug。文章提到 REA 展示里把老游戏 DX-Ball 的音效调用链还原成 C,原文称通过 3205 个原始测试用例,并复现 63 个编译字节。展示页:https://rea.tools/showcase
Opus 5.5 有 low、medium、high、xhigh、max 五档努力等级。文章建议 medium 用来巡检和导航,high 注释普通函数,max 对付混淆代码和重指针运算。安装需要 Node.js 22 以上和 npm,再选一个反汇编引擎。
混淆是硬骨头。文章引用 Elastic Security Labs 的 Tigress 基准,20 个任务,多层混淆的解决率是 0%。两个实用结论:失败尝试的成本约是成功尝试的两倍,要给每个函数设预算;把反编译结果里的垃圾先去掉,Caveman 能删约 75% 的填充内容,让模型把注意力放在真实逻辑上。
函数一多,单个聊天会忘事、改名不一致、自相矛盾。文章建议一个控制器加多个 worker,每个 worker 只处理一个函数,控制器负责拼回全局。再往后是 clean room。四条规则:只观察不抄代码;规格来自公开文件格式标准,不读竞品解析器;资产全部自绘、公版或开放许可,并放进归属文件;行为恢复和实现分开,一个上下文写规格,另一个上下文只看规格实现。有团队把这四条做成每次构建的自动检查。
应用例子是 ArtCraft 的 12 个应用。文章称它们用 Rust 从零重写,原生跑 macOS、Windows、Linux,多数还能通过 WebAssembly 跑在浏览器。每个动作都是命名命令,人点击、快捷键、AI 代理触发的是同一条命令。这给重建物一个很实际的出口:把功能包成 MCP 服务器,下一个人的代理就能像驱动 REA 一样驱动它。
验证不能靠我觉得像。没有原源码,就比行为:同一组输入,原应用和重建物输出是否一致。文章列了六个浪费周末的错误:给 Electron 应用开反汇编器;先全量 dump 再读;按文件顺序读函数;硬啃多层混淆;让模型把代码抄进重建;没有 parity 报告就发布。
边界也要说。评论区有人称 Anthropic 已经禁止用他们的模型做这类逆向,这条说法在素材里没有给出处,需要自行核实。另一条回复把它和漏洞披露节奏联系起来,提醒能力扩散后的安全边界。更值得关注的是流程本身的价值:它把闭源软件拆成可读规格,再用行为测试证明重建物。没有最后那一步,重建只是猜。
想试的话,从 REA 和一个免费反汇编器开始,先挑小目标,设预算,先侦察再反编译,最后做行为对照。文章原地址:https://x.com/i/article/2109583646684315648
发布时间: 2026-10-30 18:52