REA 工具发布:让编码智能体直接逆向任意程序
REA Reverse – Engineer Anything
REA 是一款让编码智能体具备软件逆向分析能力的工具,通过 `npx rea-agents@latest setup` 接入后可读取运行中程序的代码与配置。文章以 Windows 计算器 % 按钮和 Chrome 恐龙游戏为例,演示用自然语言让智能体恢复百分比运算分支以及加速度常量(ACCELERATION: 0.001, MAX_SPEED: 13, SPEED: 6)。
作者展示了让编码智能体直接读取运行中程序并解释其行为的完整流程,读者可参考其 setup 与 prompt 模式迁移到自己的逆向场景。
逆向工程,配合你的编码代理
了解软件的工作原理。
REA 为你的代理提供检查程序并解释其功能的工具。
已经了解逆向工程?跳转到分析指南 →
设置 REA
将此复制到你的编码代理中:
使用 npx rea-agents@latest setup 安装 REA 并将其连接到该编码代理。向我展示设置方案以供批准,然后验证安装。
或者在你的终端中运行:
npx rea-agents@latest setup
批准设置方案,然后重启你的代理。
什么是逆向工程?
通过检查程序本身来了解软件的工作原理。
目标:充分理解某个功能,以便解释它、修改它或重建它。
一个问题:为什么计算器算 200 + 10% 会得出 220?
使用 REA 之前 · 你自己调查
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10
你解码指令、跟踪调用并重建整个计算过程。
使用 REA · 你询问你的代理
一条提示。
用通俗的英语询问你的代理。
使用 REA 检查 Windows 计算器。为什么 200 + 10% 会得出 220?
示例答案 · 基于发现的结果
按下 + 之后,% 按钮会取第一个数字的百分比。
10% of 200 = 20200 + 20 = 220
- REA 提供
- 处理函数的指令、反编译代码和调用关系。
- 你的代理解释
- 哪条分支适用、它计算了什么以及如何重建它。
让我们尝试两个示例。先修改一个游戏的速度,然后回到计算器并重建它的 % 按钮。
示例 01 · Chrome 的恐龙游戏
恐龙为什么会越跑越快?
- 目标
- 可调速度地重建这个游戏。
- 为什么要逆向工程它?
- 为了复现它的加速过程,我们需要运行中游戏里的规则:它的起始速度、增量是多少以及何时停止。
玩一玩重建版
原始规则:从 6 开始,然后向 13 增加。
REA 返回
页面中实际运行的脚本。代理读取它的更新函数和速度设置,然后在新的游戏中使用这条规则。
使用 REA 检查这个恐龙游戏。它为什么会变快?展示速度规则,然后用可调速度构建一个简化版本。
检查目标: wayou 的 Chromium 衍生浏览器版本。
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}从 6 开始。在没有碰撞的情况下每次更新加 0.001,直到速度达到 13。
各部分功能
- 01 · REA读取正在运行的游戏脚本把它的实际代码和设置返回给智能体。
- 02 · 你的智能体重建规则,添加一个控件在带速度滑块的小游戏中使用恢复出的加速度。
- 03 · 你改变速度并游玩先试试原始的加速度,再选择你自己的节奏。
查看脚本、检查方法以及如何尝试分析
REA 通过本地调试连接检查了 HTTP 浏览器版本,并返回了已加载的 index.js,
包括其源码和摘要。
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6我们在一个受控的浏览器检查中调用了原游戏的更新函数,禁用了障碍物和自动调度。 经过 4,000 次更新后,速度为 10.0;10,000 次后为 13.0, 四舍五入到一位小数。
这个新的小游戏保留了那套速度规则。它的绘制、跳跃和碰撞代码是一个小型教学实现。 打开实验 查看新代码 并运行同样的速度检查。
想自己检查目标,请按照 浏览器连接步骤 使用 恐龙页面。把该页面 URL 和你的本地调试端点交给你的智能体,然后复制上面的提示词。
已检查的速度代码 · Chromium Authors · BSD 许可证
示例 02 · Windows 计算器
重建计算器的 % 按钮。
我们已经知道 200 + 10% 等于 220。现在让我们恢复加法和乘法的规则,并试试看。
- 目标
- 构建一个能 同时正确处理加法和乘法的小型计算器。
- 为什么要逆向工程它?
- 同一个按钮在加法和乘法之后使用的 规则不同。我们检查已安装的应用,找出百分比是作用在哪个数上的。
试试这个计算
200 + 20
200 的 10% = 20。然后 200 + 20 = 220。
REA 返回
一个分支除以 100,另一个分支再乘以第一个数。 智能体利用这两个分支来重建 % 按钮。
在这个示例中,previous = 200 和
current = 10。
使用 REA 检查 Windows 计算器的 % 按钮。恢复 + 和 × 之后的规则,然后构建一个同时使用这两者的简易计算器。
if (operation == multiply || operation == divide) {
percent = current / 100;
} else {
percent = current * previous / 100;
}- 使用 +
-
取第一个数字的 10%。
10% of 200 = 20 → 200 + 20 = 220 - 使用 ×
-
把 10% 转换为 0.1。
200 × 0.1 = 20
从已安装的应用到可用的 % 按钮
-
01 · REA 读取 calc.exe它会启动计算器应用代码打开
ms-calculator:。然后代理选择已安装应用的库。 -
02 · REA 读取库返回 % 处理函数的代码函数检查运算符并使用常量
100。 - 03 · 你的代理进行解读解释并复现这些规则用微软的源代码交叉核对分支,然后试用上面的 + 和 ×。
查看真实代码以及答案的核对方式
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64#define IDC_MUL 92 // 0x5c
#define IDC_DIV 91 // 0x5b
#define IDC_PERCENT 118 // 0x76
0x64 = 100使用 REA 4.1.0 检查:Windows Calculator 11.2508.4.0,x64。可读的总结使用微软公开源代码中的名称来解释恢复出的分支。
你的初次调查
在一个小型应用上试用 REA。
下载我们的 Notes 示例,跟踪其 CSV 导出,并检查一个已更改的输入。
想深入了解?
告诉你的代理你想理解或构建什么。使用 REA,你可以协同完成从 克隆此网站到 从可执行文件重建一款游戏在内的任何任务。
使用 REA 检查 https://rea.tools/。为我克隆此网站。
是的,就是这个。
使用 REA 从其可执行文件重建这款游戏。用 C 恢复游戏玩法逻辑,并与原版进行测试对比。
有关设置和分析步骤,请选择你的目标:
原生二进制文件
检查可执行文件和库中的函数、字符串、引用和调用关系。
JavaScript & Electron
从应用程序文件夹或 ASAR 归档中映射模块、路由、IPC 和原生依赖项。
浏览器与运行时活动
捕获所选的浏览器或进程活动,然后比较各次运行之间的结果。
来源:Hacker News · rea.tools