AI 观察室 · 第 2 期
REA 逆向工程
正在从手艺变成流水线
导语
过去想弄明白一个软件是怎么实现的,路只有一条:请一位看得懂汇编的老师傅,打开反编译器,在一行行指令里翻上几天。这门手艺贵、慢、还挑人。
2026年10月,一个叫 REA 的开源项目在GitHub上迅速蹿红,一度登上逆向工程方向的Trending榜。它的口号相当直白:Reverse Engineer Anything,逆向一切。
用法被压缩成一句话:把你感兴趣的功能告诉AI,剩下的交给它。它会自己去翻二进制、追调用链、看运行时行为,回来给你一段解释——而且每个结论后面都挂着证据。
开发者们玩得更野:有人试着让它“复刻”Adobe全家桶(离真正能用还差得远),有人拿它拆Unity游戏、翻固件镜像、看一个App到底往哪个目录写了文件。
就在几天前落幕的世界顶尖科学家论坛上,这个话题又多了一块更重的砝码——有高校团队把大模型驱动的软件“逆向”推到了工业软件层面,并作为正式成果对外发布。玩具级的爆改和工业级的“再工程”之间,到底隔着什么?这个问题,正是本文想聊的。
一个既不写反编译算法、也不训练模型的开源项目,如何让逆向工程从手艺变成流水线?
先看三个已经跑起来的真实项目
目前,有三拨人拿REA真的干成了事:一个“复刻”了剪映,一个拆了电视浏览器,一个把《战地2》的引擎重造了一遍。
来源:rea-capcut / sofa-tv-browser / OpenBattlefield2(GitHub)。
ReaCut:看不惯剪映要登录?那就自己写一个。
有位开发者喜欢剪映的顺手,但受不了它的绑定。他没去论坛发帖抱怨,而是让REA把剪映的界面行为和工程文件翻了个底朝天——界面怎么响应、工程怎么存、导出怎么走,一条条记下来。然后他用Electron、React和FFmpeg照着自己的理解写了个新编辑器:多轨剪辑、字幕、色度键、关键帧曲线一个个补齐,v0.6.0连macOS安装包都打好了。最讲究的是仓库里那份REA_FINDINGS.md:哪些结论是REA查出来的、哪些是自己扫出来的,一笔一笔分得清清楚。
GitHub:github.com/Xiangyu-CAS/rea-capcut
Sofa TV Browser:先拆开看看你到底往外送了什么。
另一位开发者喜欢TCL电视自带浏览器BrowseHere的遥控器操作,但一想到它的隐私表现就睡不着。他让REA拆了这个APK,看清了它的工作方式,然后用Android System WebView重写了一个:方向键当鼠标用,广告和追踪器按域名拦掉,不登录、不打卡、不上报,整个应用只有1MB。README里写得坦坦荡荡——交互思路是跟BrowseHere 学的,但它的一行代码、一张图都没带。
GitHub:github.com/sonalder-darlene/sofa-tv-browser
OpenBattlefield2:把2005年的引擎,用今天的C++重造一遍。
第三个项目最硬核,也“较真”。几个人决定把《战地2》的Refractor 2引擎一比一重写——不是“致敬”,是复刻。规矩直接刻在仓库里:源码里每条规则必须注明出处,来自原二进制的哪个地址、游戏数据的哪一行,或者一帧实测画面;没搞清楚的原版行为,一律登记成“债务”,绝不靠猜填上。现在这个引擎已经能连上真正的《战地2》服务器——服务器发来的344个状态里,343个和它自己的预测对得上,误差不到一毫米。
GitHub:github.com/Moxnatiy/OpenBattlefield2
一、它不是一台反编译器,是一台“翻译机”
先给REA一个准确的定位。
很多人第一眼会把它理解成“AI版IDA”。其实不是。REA自己不反汇编、不恢复控制流、不实现调试协议,它做的是接:把上面那个听得懂人话、会做计划的AI,和下面那些几十年沉淀下来的逆向工具接起来,并且规定好取回来的东西必须长什么样。
整个结构分三段:
上面是Agent宿主(Claude Code、Codex、Cursor、Gemini CLI、Grok Build等),负责理解你的问题、决定下一步、解释结果;
中间是REA自己(npm包 rea-agents,MIT协议),有三个入口:给Agent用的MCP服务、给人用的CLI命令、以及教Agent怎么调查的Skill工作流;
下面是真正干活的引擎:Hopper、Ghidra、IDA、JADX、Apktool、adb、Binwalk、TShark、Chrome调试接口等等。它们由REA按需挑选和驱动,多数需要使用者自己准备。
如果说Ghidra、IDA是放大镜和镊子,REA更像一只把这些工具递到AI手里的机械臂,外加一本“取证规范”。它不产生观察,它产生的是观察的秩序。
REA的三层结构:上层Agent宿主、中间REA运行时、下层真正干活的引擎。
这里有个容易被忽略的地方:REA之所以能做得这么“薄”,恰恰是因为它上下都踩着厚地基——下面是几十年积累的逆向引擎,上面是越来越强的通用大模型。它只负责中间那一层:路由,立规矩。
这也提前划出了它的天花板:引擎看到多少,它才能说多少;模型推理有多稳,它的结论就有多稳。指望它凭空变出引擎看不到的东西,是一定会失望的。
二、一次完整的“拆解”,中间到底发生了什么
把它的一次调查拆成六步,比看任何宣传语都直观:
①提问:你说清目标,是某个App、某个二进制,还是某个具体功能;
②总览:REA先看目标的“身份”——架构、入口点、导入了哪些库、是什么语言写的;
③选引擎:原生二进制交给Hopper/Ghidra/IDA,APK交给JADX,固件交给Binwalk,网页交给浏览器调试接口;
④取证据:返回伪代码、字符串、调用关系、地址范围、运行轨迹,每条都带上来源;
⑤追问:AI看到结果后自己决定下一刀切在哪,循环继续;
⑥收口:最后给出解释,必要时照着结论写一份自己的实现,再跑测试验证。
REA的一次完整调查循环:提问、路由、执行、取证、收口。
在这六步里,我认为最值得单独拿出来说的,不是“AI会拆”,而是它怎么对待自己不知道的东西。
REA的返回结构里,有三样东西是并列的:证据(Evidence)、未知项(unknowns)和限制(limitations)。证据是原始观察、文件位置和来源;限制说明这条结论覆盖不到什么(比如“静态分析看不到运行时解密后的字符串”);未知项则明说“这里我判断不了”。
这三件套的意义,比“加快分析速度”大得多。逆向工程里最贵的错误不是慢,是错得很像真的——一个貌似合理实际却错误的功能解释,会带着整个团队跑偏好几天。让模型把“我不知道”也当成一种正式输出,并且把它变成下一轮探测的输入,等于给这条流水线装了一个刹车。
AI在逆向场景里最大的风险从来不是看不懂,而是编得出来。REA用结构而不是用提示词去堵这个洞,这是它真正的技术贡献。
两种拆法对比:只给模型提示词,与给模型一套“证据+未知项+限制”的取证规范。
三、除了二进制,它还能拆什么
如果只把它当成“二进制分析器”,会低估它的覆盖面。
REA有一批不需要额外引擎的内置解析能力:Go二进制里的编译器版本、模块与依赖替换;Rust二进制里嵌入的crate清单;Unity游戏的IL2CPP元数据;Godot的PCK资源包;PyInstaller打包的Python程序;Flutter的Dart快照;甚至EVM字节码和SQLite文件。加上需要引擎的部分,它覆盖了原生二进制、APK、.NET程序集、Electron应用、网站、抓包文件、固件镜像、进程行为和崩溃转储。
REA的能力地图:从原生二进制、APK到网页、固件与模型文件。
其中对我们这些做AI的人最有意思的一格,是模型文件。
REA能直接读出GGUF、safetensors这类模型文件的元数据、张量声明和派生统计。这意味着一个更现实的问题有了低成本的答案:别人丢过来一个量化模型,它的结构、来源和被改动过的痕迹,能不能先机器过一遍?
过去这件事要么靠人肉读配置,要么根本没人做。现在它可以被塞进一条流水线的第一道关口。第三方SDK、预编译库、固件镜像同理——供应链里那些“看不见但必须判断”的东西,终于有了一个统一的入口。
四、被高估的REA
赞歌社区已经替它唱完了,这里只说我们从代码和仓库里看到的东西。它没有提出新的反编译算法,也没有训练任何模型。它做的事情,是把专家脑子里的调查流程——先看什么、换什么工具、哪些算证据、什么时候该承认不知道——写成了一套可复用、可版本化的规范,再用MCP把这套规范接到所有Agent上。
把前面几个案例重新翻一遍,ReaCut把剪映拆得底朝天,拆出来的也只是界面行为和工程文件,剪映真正值钱的云端渲染管线与特效算法一件都没碰,补齐一个v0.6.0花的时间并不比从零写个编辑器少多少;OpenBattlefield2把服务器状态对齐到343/344,但那是对一个2005年引擎的追赶,每条规则都得人肉核对出处;Sofa拆得再透,得到的也只是“原版减去广告”,不是任何一个原版没有的新能力。就在刚闭幕的顶科论坛上被作为成果发布的工业软件“再工程”,给出的也是同一种克制:3 万个函数先完成5000个核心函数,目标是“功能对齐、性能比肩”——比肩,还不是超越。逆向的天花板,是别人已经做出来的东西,而创新没有“原版”可以拆,这正是它依然稀缺的原因。复刻的成本每降一分,“做出第一个”的价值就涨一分——工具抹平的是追赶的坡,抹不平领先的那段路。
对行业:把“老师傅的隐性经验”变成了可以分发、可以审计的工程资产,新人上手成本陡降;
对流程:把“能解释”和“能复现”接成了一个闭环——解释完可以照着写一份实现,再跑测试验证,不再是写完报告就结束;
对安全:应急响应、第三方组件审计、固件合规、App隐私行为核查,这些过去主要靠堆人/天的活,第一次有了统一的自动化入口。
REA能做与做不了的事:它能立规矩、能路由,但不替引擎看、也不替模型想。
这里必须说清:门槛降低是双刃剑。同一套能力,既能让企业查清自己采购来的软件里有什么,也能让别人更省力地拆解别人的成果。技术能复现,不等于法律上可以复制。
五、它拆不开的东西,和拆开之后的麻烦
技术边界很清晰:
精度上限由引擎决定:REA不修复伪代码的错误,也不负责去壳、去混淆、绕过反调试,这些仍然要人和专用工具来;
静态不等于运行:官方明确区分两种模式,读文件不执行(安全但有盲区),运行时捕获会真的把目标跑起来(信息多但有副作用,需要沙箱和权限管控);
平台支持参差不齐:有些能力只在Linux x64上可用,很多工具需要使用者自备;
“不知道”机制也有边界:未知项能减少编造,但减少不了引擎本身给错、模型归纳过头、验证设计不合理这三类错误——错误可以在四个环节分别产生,规范挡不住全部。
更要紧的是合规。
多数商业软件的用户协议里明确禁止逆向,软件著作权和商业秘密也是硬约束。我国《计算机软件保护条例》对“为了学习和研究软件内含的设计思想和原理”的情形留有一定空间,但边界非常窄,且不同国家规定差异很大。真要动手之前,先让法务看一眼目标软件的授权条款,这一步省不掉。
一个务实的用法是:把它限定在自有资产、已授权目标、开源组件和安全研究这几类场景里,并且把调查过程留成可审计的证据链——这恰好是REA擅长的事。
六、我们的观察:工具会越来越薄,“说清楚证据”会越来越厚
REA值得关注的点,不在“AI会逆向了”,而在它示范了一种分工方式:
模型负责理解和规划,工具负责产生确定性观察,中间那一层负责让观察可追溯、让未知被显式表达。这个结构不只适用于逆向——凡是“AI要替人下判断、但判断错了代价很高”的场景,都需要这样一层。
对我们来说,还有两个更近的落点。一是模型与Agent供应链安全:模型文件的元数据核查、第三方SDK的自动化审计,都能直接接上它已有的能力;二是Agent工具链自身的安全:REA本身就是一个“MCP服务+Skill+外部引擎”的组合体,它的权限边界、工具调用审批、证据可信度,正好是研究Agent供应链攻击面的现成样本——当大家都在给AI接工具时,工具链的合法性、来源和调用权限,就该被当成一等公民来管。
中间这层会不会随着模型变强而消失?有可能。但“结论必须带着证据和未知项回来”这件事,不会因为模型变强就变得不重要。恰恰相反。
AI越会自己下结论,我们越需要它把依据一五一十地摆出来。
关于 AI 观察室
AI观察室是AI模型与安全实验室的观察栏目,关注AI的新进展与实际应用。我们挑选有趣的案例,用简单易懂的方式,聊聊技术能做什么,又会怎样影响工作与生活。
-END-
供稿:AI模型与安全实验室
编辑:喻 靖
主编:虞祝豪
总编:堵炜炜
动动小手,让更多的人看到!

