
REA 发布逆向工程工具,让编程智能体分析程序行为
来源标题:REA Reverse – Engineer Anything
REA 推出一款逆向工程工具,可让编程智能体检查程序并解释其功能。用户通过 npx rea-agents@latest setup 将 REA 连接到智能体,经批准设置计划后重启智能体即可使用。该工具的目标是帮助理解功能,以便解释、修改或重建软件。
以下正文由 AI 翻译自 Hacker News(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
用你的编程 agent 做逆向工程 REA 为你的 agent 提供工具,去检查一个程序并解释它的行为。
已经了解 RE 了? 跳到分析指南 →
›用 npx rea-agents@latest setup 安装 REA 并把它连接到这个编程 agent。把安装方案给我看以便批准,然后验证安装。 批准安装方案,然后重启你的 agent。
通过检查程序本身来弄清楚软件是怎么工作的。 目标:对某个功能理解得足够透彻,从而能够 解释它、 修改它,或 重建它。
一个问题: 为什么计算器对 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
01 · 哪个分支? “0x5b?0x5c?两个跳转指向同一个地方。这些是哪些运算符?” 查一下命令 ID,然后给分支加上标注。 “100 很清楚。那些 call 只是地址。哪个做除法?哪个值传进去?” 检查辅助函数并追踪存储的值。 “这条路径乘以另一个输入。所以 10% 是指在 + 之后取 200 的 10%。” 给操作数命名,并检查两条运算符路径。 你解码指令、跟踪调用、重建计算过程。
›用 REA 检查 Windows 计算器。为什么 200 + 10% 给出 220?
在 + 之后,% 按钮取第一个数字的一个百分比。 我们试两个例子。 改一个游戏的速度,然后回到计算器重建它的 % 按钮。
6 → 10 → 13 玩一玩 跳跃 ↑ 重新开始 速度 6.0 使用恢复出来的加速度规则 原始规则:从 6 开始,然后朝 13 增加。 启用 JavaScript 来玩这个重建版。上面的代码和解释仍然可读。 页面里实际运行的脚本。agent 读取它的 update 函数和速度设置,然后在新游戏里套用那条规则。
›用 REA 检查这个恐龙游戏。为什么它会变快?把速度规则展示出来,然后构建一个小版本,速度可调。
被检查的目标: wayou 的 Chromium 衍生浏览器版本。
if (this.currentSpeed < this.config.MAX_SPEED) { this.currentSpeed += this.config.ACCELERATION; 从 6 开始。只要没发生碰撞,每次 update 增加 0.001,前提是速度低于 13。
REA 通过本地调试连接检查了那个 HTTP 浏览器版本,并返回了加载的 index.js,包括它的源码和摘要。
ACCELERATION: 0.001, MAX_SPEED: 13, SPEED: 6
我们在受控的浏览器检查中调用了原游戏的 update 函数,禁用了障碍物和自动调度。4000 次 update 后,速度为 10.0;10000 次后,为 13.0,保留一位小数。
新的迷你游戏保留了那条速度规则。它的绘制、跳跃和碰撞代码是一个小型教学实现。 打开实验区查看新代码,并运行同样的速度检查。
要自己检查目标,请按浏览器连接步骤操作,使用那个恐龙页面。把该页面的 URL 和你的本地调试端点给你的 agent,然后复制上面的 prompt。
被检查的速度代码 · Chromium Authors · BSD 许可证
我们已经看到为什么 200 + 10% 给出 220。现在来恢复 + 和 × 两种情况的规则,并试一下。 一个分支除以 100。另一个还乘以第一个数字。 agent 用两者来重建 % 按钮。
在这个例子里,previous = 200,current = 10。
›用 REA 检查 Windows 计算器的 % 按钮。恢复 + 和 × 之后的规则,然后构建一个使用这两种规则的小型计算器。
if (operation == multiply || operation == divide) { percent = current / 100; } else { percent = current * previous / 100; 用 + 取第一个数字的 10%。200 的 10% = 20 → 200 + 20 = 220 用 × 把 10% 变成 0.1。200 × 0.1 = 20
从已安装的应用到一个能用的 % 按钮
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
运算符 ID · Microsoft 的源码 #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。可读的摘要使用 Microsoft 公开源码中的名称来解释恢复出来的分支。
百分比实现 · Microsoft 的测试用例 · 原生安装指南
下载我们的 Notes 示例,追踪它的 CSV 导出,并检查一个被改动的输入。
告诉你的 agent 你想理解或构建什么。有了 REA,你们可以一起处理任何事情,从克隆这个网站到从可执行文件重建一个游戏。
›用 REA 检查 https://rea.tools/。帮我克隆这个网站。 ›用 REA 从这个可执行文件重建这个游戏。用 C 恢复游戏逻辑,并对照原版测试。
关于安装和分析步骤,选择你的目标: 检查可执行文件和库中的函数、字符串、引用和调用关系。 从应用程序文件夹或 ASAR 归档中梳理模块、路由、IPC 和原生依赖。 捕获选定的浏览器或进程活动,然后跨多次运行比较结果。 阅读 FAQ, 在 Discord 上和我们聊天, 或者 开一个 GitHub issue 报告 bug 和功能请求。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。