REA 解剖

以 morluto/rea v6.8.0 源码为样本 · 拆解一个逆向 Agent 如何把二进制、运行时与网页变成可复核的证据

共 1 个子专栏 · 9 篇文章

子专栏

全部文章

  • 总纲:把逆向工程做成一条证据流水线

    REA 真正做的不是"把逆向工具包一层 MCP",而是把一次逆向拆成可验证的证据生产:工具负责观测,账本负责记住,技能负责方法,预算负责把话说完。

  • 工具面:172 个契约,先做能力协商

    172 个工具契约不是 172 段提示词。REA 用工具族、紧凑 schema、副作用声明和可用性清单,把"模型能看见什么"变成一次能力协商。

  • 会话:一次 open_binary 绑定一个引擎

    一个目标只能有一个深分析绑定。REA 宁可返回 ambiguous,也不让 auto 在 Hopper 和 Ghidra 之间悄悄挑一个——因为选择引擎本身就是一次分析决策。

  • 桥:把 GUI 逆向工具变成可调用函数

    Hopper 不是被 shell 出去的,Ghidra 也不是。它们各自被包装成一条带随机令牌、私有 socket、请求期限和进程组清理的本地服务。

  • 证据:账本、指纹与未知

    在 REA 里,"我看到"必须变成一条带内容哈希、权威来源、覆盖度和未知项的记录。模型可以犯错,但记录不能悄悄改口。

  • 重建:从"看懂了"到"可验收"

    让 Agent 复刻一个功能不难,难的是证明它复刻对了。REA 把"完成"拆成一张欠账清单:每条义务都要有唯一实现、对应用例、通过验证的证明。

  • 预算:summary-first 是架构,不是优化

    反编译一个函数可能几万字,一张调用图可能几十万个节点。REA 的做法不是截断,而是把"分析完整"和"交付多大"拆成两个问题。

  • 边界:进程、路径与"目标内容不是指令"

    REA 能启动进程、写文件、连网络、操作设备。它没有把自己说成沙箱,而是把每一次"越界"都写进契约:谁能执行、执行什么、留下什么、怎么清理。

  • 技能:一份 525 行的调查协议

    工具告诉模型"能调什么",技能告诉它"什么时候调、按什么顺序、什么算完成"。REA 的 525 行 SKILL.md 不是说明书,是一份带恢复路径的调查协议。