ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

rea-agents:逆向分析一篇读懂

rea-agents:逆向分析一篇读懂

rea-agents:逆向分析一篇读懂

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

REA(npm 包名 rea-agents)让 AI 编码 Agent 在本地驱动 Hopper、Ghidra、IDA 做逆向分析。读完这篇 rea-agents 源码解读,你带走它的分层逻辑与跨进程通信的关键取舍。

它到底在替你做什么

  • 一条命令接入 Agent—— setup 把 MCP 注册和技能指令写进 Claude Code、Codex 等客户端,原配置自动备份
  • 终端与 Agent 看到同一世界—— 两条通道复用同一套分析逻辑,结果可互相印证
  • 数据不出机器—— 分析全程本地执行,不依赖任何上传
  • 结论自带小票—— 每条结果附带证据、局限与未知项,而不是"大概是这样"

把仓库摊开看

  • src/—— 核心 TypeScript 源码,入口到 Provider 的全部分层(MCP server)
  • bridge/—— 在引擎进程内部执行的认证脚本,Python、Java、Swift 多语并存(Unix 套接字)
  • scripts/—— 构建、发布与大量 verify 校验脚本(npm 生命周期)
  • tests/—— Vitest 套件,含 1200 余个边界测试文件(vitest projects)
  • docs/—— 官方文档与工具契约(mcp-contracts)
  • website/—— 官网页面源码(VitePress 模板)
  • native/—— Windows 原生 Node-API 模块(Job Object 进程隔离)

从入口到落盘:一次调用的完整路径

以rea analyze-javascript-application /abs/path --json这条零依赖命令为例:scripts/rea.mjs 判断首参数不是mcp,懒加载编译后的 CLI 运行时(它只做路由与 SIGPIPE 善后)→ src/cli.ts 归一化参数,把约 35 个命令模块注册进同一个一次性 CLI(把参数翻译成内部输入)→ src/composition/directAnalysis.ts 快照环境变量、按需 import 应用层(为本次调用建全新会话)→src/application/javascript/下的 JavaScriptApplicationService 用 Babel 把源码解析成 AST,重活丢进独立 worker 进程(内存峰值不拖垮主进程)→src/domain/纯函数层计算证据图与摘要 →src/contracts/的 Zod schema 校验输出形状 → JSON 从 stdout 落出。

设计里最值钱的一个决定:带签名的本地套接字

问题在于 Hopper、Ghidra 是封闭进程,Node 拿不到它们内部的符号表与反编译结果。朴素的 spawn 子进程读 stdout 只能捞命令行输出,要不到"某地址的交叉引用"这类进程内 API;抓 GUI 更脆弱。REA 的解法是启动引擎前注入REA_SOCKET和随机REA_TOKEN,随包发布的 bridge/hopper_bridge.py 在引擎自己的线程上起权限 0600 的 Unix 套接字,每帧请求都要过hmac.compare_digest校验 token。副作用同样真实:引擎怪癖(Hopper 的 API 离开其 Python 线程会死锁)被锁进桥里,请求体要设 16MiB 预算,每种引擎各写一份桥——这正是bridge/目录多语并存的原因。

跑起来的最低成本:从自检到首跑

前置条件:Node.js ≥ 22 与 npm;Linux 上还要求 PATH 里有 procps 的ps(用于进程所有权检查)。

npx -y rea-agents@latest doctor --json # 健康自检:引擎与注册状态 npx -y rea-agents@latest analyze-javascript-application /abs/path --json # 纯静态首跑,无需任何引擎 npx rea-agents setup # 把 MCP 与技能包注册进编码 Agent

带走三句话

  • 入口只路由,能力分层装—— 一个约 270 行的 mjs 分发 CLI/MCP 两条流,新增目标类型只需多一个 Provider,上层完全无感。
  • 证据是一等公民,不是事后补丁—— 契约层用 Zod 定边界、领域层是无副作用纯函数,结果可复现可审计,这是把工具交给 Agent 的底层纪律。
  • 知道它不覆盖什么—— 静态 JS 分析开箱即用,原生分析仍需自备 Hopper/Ghidra/IDA;doctor命令会替你量出差距 🧭

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进