ARTICLE · 1167846
AI 开始拆软件了:REA 逆向特别篇
沿着一个功能,读懂软件内部
5 个案例,读懂分析与重建的过程
EDITOR’S NOTE
老游戏里的砖块碰撞声如何映射到左右扬声器?Notion 的一次复制操作要在系统里穿越几个进程?morluto 开源的 REA 把这些疑问带入二进制与脚本深处,让编码代理调度专用分析工具,顺着函数、汇编指令和调用链寻找答案。想要理清这套逆向工作流,DX-Ball 案例是很好的切入点:目标足够聚焦,重建代码也能与原版行为逐一比对。
REA 全称为 Reverse Engineer Anything,由 morluto 开源发布。它基于 MCP 或命令行接口运行,将二进制程序及 JavaScript 应用的分析流程接入编码代理。模型在流程中负责规划提问与梳理结果,底层的分析工具则负责读取目标文件并抽取结构。
针对原生程序,REA 支持对接 Hopper、Ghidra 或 IDA,提取汇编指令、反编译伪代码及交叉引用。拿到这些底层数据后,编码代理能够逐步推导特定逻辑,甚至重写一份对等实现用于行为比对。这套工具的目标在于拆解局部逻辑,而非还原完整的原始工程。

作者:morluto / REA。项目简述:REA 给 AI 接上了什么。
打砖块游戏 DX-Ball 在击中砖块时,音频会根据砖块的横向坐标分配左右声道平衡。分析时,REA 沿着调用链定位处理声像(panning)的子程序,提取调用方传入的屏幕坐标,再从二进制中解出计算系数,为代理整理对应的 C 实现提供依据。
该还原工作针对这个声像函数设计了 3,205 组原始 x86 运行时行为对照,并借助对应版本的旧编译器复现了 63 个机器码字节。这种做法展示了清晰的研究边界:锁定输入输出明确的单一函数,再用原程序的实际输出校对代码。

作者:morluto / REA。案例简述:老游戏里的左右声道,是怎么算出来的。
在 Notion Desktop 7.6.1 中,剪贴板事件从渲染层触发,经由 preload 脚本封装并通过 IPC 发往主进程,最终由 Electron 底层接口写入操作系统剪贴板。REA 找到起点代码后,代理顺着这一条消息通信链路完成了端到端追踪。
该案例的分析重心在于跨进程数据流。单看渲染进程里的“copy”调用无法弄清完整闭环,必须理清谁在发消息、主进程如何响应以及系统 API 在哪里生效。这种路径同样适用于调查 Electron 应用的本地文件导出与保存机制。

作者:morluto / REA。案例简述:按下复制之后,Notion 内部发生了什么。
DOS 游戏《东方幻想乡》(TH04)中的环状弹幕既能沿预设角度发散,也能整体对准自机坐标。REA 读取底层的 16 位 DOS 指令后,协助将汇编对应为 C++ 角度运算:算法先计算均匀发散的角度基准,再叠加上玩家相对方向与发射源的旋转偏移。
游戏引擎将整圆划分为 256 个离散角度单位。发射 16 发环状弹幕时,弹道间隔固定为 16 个单位,即常规几何下的 22.5 度。拆解此类规则时,可将排布算法与朝向偏移拆开研究,各自弄清后再验证叠加结果,无需从一开始就通盘逆向整场战斗。

作者:morluto / REA。案例简述:一圈弹幕,怎样一起瞄准玩家。
Aegis 开源双重认证应用的案例从其公开 Android APK 入手,剥离出基于时间的一次性密码(TOTP)生成算法,并搭建了带有时间轴调节的网页端演示。算法以 30 秒为一个步长切分时间戳,将周期计数与账户密钥共同用于计算,最终生成默认的六位数字。
演示环境直接使用公开的标准 RFC 测试密钥,拖动时间滑块即可看到时间窗口跨越 30 秒边界时验证码的刷新动作。这类功能很适合用可控参数测试:固定密钥并对比时间切换点,把逻辑落实到确定状态上。研究该功能并不需要触及真实用户的私密凭据。

作者:morluto / REA;Aegis / Beem Development。案例简述:验证码为什么每隔 30 秒换一次。
DownUnderCTF 2023 的一道公开练习题要求输入特定字符串,程序校验通过后输出成功信号。REA 帮助提取出关键校验流程及硬编码数据,代理随后将内部的位掩码与累加判定提取为数学方程组,交由求解脚本计算得出输入,再由原程序加载验证。
这种方式将逆向工程收敛为针对性问题:寻找满足这组运算约束的具体数据。公开比赛题目有确定的通过标准和即时反馈,适合用来熟悉字符串定位、交叉引用与输入求解的基本操作,比直接处理工业级软件更容易验证。

作者:morluto / REA;赛题作者 joseph。案例简述:把一道逆向赛题,拆成能求解的方程。
REA 的官方指南建议从明确的功能现象切入:分析具体的原生函数、捕获 Electron 应用的导出链路,或是定位点击事件发出的网络请求。聚焦一个功能后,更容易明确要找的入口与上下文。
可行的分析步骤通常包括:选定本地目标并明确要看的功能,定位初始入口,顺着依赖展开追溯,最后比对分析结果。提问时应清楚说明需要解释哪个环节、期待查看哪处代码段以及如何核验结论。先跑通一个可说明的小闭环,再逐步扩大范围。

作者:morluto / REA。项目简述:好问题,比“帮我逆向”更有用。
官方推荐通过 setup 流程完成代理环境配置。准备好兼容的 Node.js 与 npm 环境后,在终端执行以下命令,根据提示选择对应的代理客户端,核对配置修改项,确认后重启客户端使其生效。
npx rea-agents@latest setup
安装脚本会写入 MCP 服务的连接配置并载入调查 Skill。单独放置 Skill 只能提供流程说明文本,缺少 MCP 工具连接则无法调度底层分析功能。原生二进制需要单独配置反编译引擎;纯静态 JavaScript 分析则无需 Hopper、Ghidra 或 IDA,可以作为较轻的前置练习。

作者:morluto / REA。项目简述:上手时,别只装一个 Skill。
起步练习宜选用自主编译的测试程序、开源软件发布包或公开 CTF 题目。原生分析的产物主要是反汇编与伪代码,代理重写的逻辑必须结合具体的输入输出加以对照。
同时需要留意数据流向:REA 的文件扫描与解构在本机完成,但回传给代理的分析文本会遵循所选模型提供方的数据隐私条款。分析受限程序前应确认这些材料是否允许上传至该模型。涉及动态运行的样本,应放入隔离环境操作,避免陌生程序读取日常工作目录。

作者:morluto / REA。项目简述:开始之前,先选好目标。
CLOSING
先拆一个你真正好奇的功能
一个声道的运算规则、一次跨进程消息派发、一组环状弹幕的角度规则,都能成为观察软件内部结构的切入点。REA 的价值在于把具体的问题接到对应的分析工具上,让每一步推导都有代码和数据作为依据。如果这篇整理对你有帮助,欢迎点个赞。
REFERENCES · 9 SOURCES
REA 开源项目 · morluto:https://github.com/morluto/rea DX-Ball 声像计算 · REA:https://rea.tools/showcase/dx-ball/ Notion 剪贴板 · REA:https://rea.tools/showcase/notion/ TH04 弹幕角度 · REA:https://rea.tools/showcase/th04/ Aegis 验证码 · REA:https://rea.tools/showcase/aegis/ DownUnderCTF 赛题 · REA:https://rea.tools/showcase/ctf/ 调查方法 · REA:https://rea.tools/guides/ 安装连接 · REA:https://rea.tools/get-started/ 工具与数据流向 · REA:https://rea.tools/faq/















































































