ARTICLE · 1229784
REA逆向工具解析:用3个案例看懂软件功能
在 Notion 里复制一段带格式的内容,文字和 HTML 是怎样进入系统剪贴板的?对想研究这个功能的人来说,有用的答案应该能指出入口、调用路径和最终写入位置。难点在于,没有源码时,仅看界面很难找到这些位置。
REA,全名 Reverse Engineer Anything,是 morluto 在 GitHub 开源的工具项目。它提供 MCP 服务,把逆向分析工具接给 Claude Code、Codex、Cursor 等 AI 编程 agent,也有 CLI。它适合想理解已有软件、研究互操作的开发者,以及需要核对功能实现的产品经理和重度用户。项目截至10月22日约35.9万Star。
下面从三个官方案例,看 REA 怎样分析软件里的具体功能。
1. Notion:追踪一次复制去了哪里
官方以 Notion Desktop 7.6.1 为对象,定位页面暴露的 clipboard.write,再经过 preload(预加载脚本)的 ipcRenderer.invoke、主进程的 ipcMain.handle,最终找到 Electron 的 clipboard.write。
贯穿两端的通道名是 notion:clipboard:write,主进程接收端还会检查请求发送者。这样,页面入口、跨进程转发和系统写入串成了一条可以逐段查阅的调用链。
这个案例解释了指定版本的一次复制行为。分析对象是这个版本打包后的 JavaScript/Electron 代码。对开发者而言,这提供了一个提问方式:先找清某个功能经过哪些层,再讨论如何实现类似行为。
2. DX-Ball:伪代码漏了参数,怎么办
1996年的 Windows 游戏 DX-Ball,砖块所在位置如何决定声音偏左还是偏右?官方围绕1.07版中的一个函数展开调查。
第一份反编译伪代码没有参数,只显示一次数值转换。继续检查指令,发现 [EBP+8] 读取了一个输入;追踪调用者,才确认它是砖块的横坐标。再读取常量,恢复出核心计算:
pan = (x * 1.5625 - 500) * scale
结果最后转为整数。当 scale=1,横坐标取0、320、640时,分别得到−500、0、500,对应左侧、中央和右侧的声像值。
官方记录中,重建函数通过了3205个行为用例。测试让原始 x86 函数与重建的 C 函数接收相同输入,再比较返回值。在固定 VC4.0 工具链并处理重定位后,编译结果匹配原函数的全部63字节。这次核对的是声像函数,可玩游戏的重建仍在推进。
这个案例提醒我们:伪代码可能漏掉关键信息,agent 还要结合指令、调用者和数据继续追问。解释看起来合理之后,仍需要原程序与重建实现的对照。

图:REA官方DX-Ball案例。
3. Aegis:验证码为何每30秒变化
在 Aegis Authenticator 3.4.3 案例中,REA 静态分析官方 APK,定位 TotpInfo 等类,再沿 getOtp 调用找到生成逻辑。
默认设置是6位数字、30秒一个时间窗口。程序将时间划分成块,把块编号与账户密钥一起用于 HMAC 计算,再整理成验证码。同一时间块内,相同密钥得到相同结果;时间跨过分界,输入也随之改变。
官方演示用的是公开 RFC 6238 测试密钥:59秒得到287082,60秒得到359152。这让“每30秒变化”变成了可以检查的具体输入与输出。
项目将抽取出的 Java 方法与独立重建实现做了133例对比,包含时间分界和前导零。验证运行的是抽取方法和重建代码。这个案例还原了验证码的生成规则,账户密钥和时间共同参与计算。

图:REA官方Aegis案例的分析路径。
这里值得借鉴的是测试输入的选择:既覆盖时间窗口边界,也检查以0开头的验证码是否被补齐到6位。
起步:把目标缩成一个功能
三个案例共同展示了 REA 的用法:它返回伪代码、指令、引用或模块等证据,agent 据此继续追问、解释、重建,再验证。分析和验证围绕指定的功能展开。
你需要关注的是,结论能否回到具体代码位置,以及重建结果能否用输入输出核对。若 agent 只给出解释,却找不到对应代码,应将这部分保留为未确认,继续定位。
想尝试的话,可以按下面的顺序开始:
- 选一个你有权分析的小程序
,记录版本并保留原始文件,聚焦互操作或学习任务。 - 准备环境并安装
:按当前 README 准备支持版本的 Node.js 与 npm,运行 npx rea-agents@latest setup,审阅配置变更后重启 agent。 - 缩小问题
:先研究一个功能,例如 CSV 导出的字段顺序和转义规则。 - 索取依据
:要求返回调用路径、代码位置与未确认项,再写最小实现。 - 检查行为
:用两三个输入比较原程序与重建结果,并人工检查证据。起步后再逐步补充输入,扩大测试覆盖。
依赖要按目标选配:原生二进制分析需要 Hopper、Ghidra 或 IDA 等后端,静态 JS/Electron 分析不需要原生分析引擎。REA 自身采用 MIT 许可证;使用 IDA/Hopper 时需单独解决许可,模型和依赖也可能带来成本。
下面是可改写的建议任务示例:
用REA分析这个应用的CSV导出:找入口、字段顺序和转义规则,引用代码位置,再写最小示例,列出未核实部分。请用普通文本、含逗号字段、含引号字段,比较原程序与示例输出。
公开来源
官方仓库:https://github.com/morluto/rea 官方网站:https://rea.tools/ Notion 复制案例:https://rea.tools/showcase/notion/ DX-Ball 声像函数案例:https://rea.tools/showcase/dx-ball/ Aegis 验证码案例:https://rea.tools/showcase/aegis/
AI实践簿,是一个专注 AI 工具、方法与真实应用的公众号。我们会核对信息来源,拆解适用场景与实践路径,帮你判断什么值得跟进、怎样真正用起来。欢迎关注 AI实践簿。















































































