☰
一条命令验证 REA:JS 静态分析与逆向分析零外部引擎
2026/11/5 1:36:15 网站建设 项目流程

一条命令验证 REA:JS 静态分析与逆向分析零外部引擎

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

你拿到一个解包后的 Electron 应用目录,要求列出它 import 的全部第三方模块和入口文件。翻源码不现实,装 Hopper 也白搭——这是纯 JS 问题。REA(npm 包rea-agents)把这类 JS 静态分析与逆向分析压进一条命令,AI Agent 和终端共用同一套工具。

最小验证:一条命令确认 JS 静态分析能跑

npx -y rea-agents@latest analyze-javascript-application /path/to/your-app --json

输出是一份 JSON:模块清单、import 依赖关系,每条结论附带证据文件路径。这一步不需要装任何外部引擎,Hopper、Ghidra、JADX 全都用不上。它是六个分析对象里门槛最低的一条,适合验证安装。

执行流:敲下命令后代码走了哪三步

  1. 入口 scripts/rea.mjs 只看首参做路由:mcp单独出现时加载长驻运行时dist/mcp/main.js;mcp doctor走dist/cli-runtime/mcpDoctor.js;其余参数全部落入一次性 CLI 层dist/cli-runtime/cli.js。296 行里没有一行分析逻辑。
  2. CLI 层把analyze-javascript-application派发到 src/application/javascript/JavaScriptApplicationService.ts:输入先过 Zod schema 校验,再对目录做纯静态遍历,全程不启动浏览器和引擎。
  3. 结果回到 src/application/(578 个 TS 文件)这一层:本次分析绑到该目标的独立会话上,JSON 里的每条结论都能追回对应证据文件,同一目标的后续调用挂回同一张账本。

最难啃的:Node 怎么指挥 Hopper 和 Ghidra

问题很直接:Node 进程调不到 Hopper 的 Python API,也调不到 Ghidra 的 Java API。约束在于引擎是第三方进程,版本随厂商升级,REA 不能改它们的代码,也不该让长驻 Node 服务替引擎持有状态。

方案是把常驻小脚本放进引擎进程内部:bridge/hopper_bridge.py 在 Hopper 里把请求翻译成 Hopper Python 调用,bridge/ghidra/ReaGhidraBridge.java 以 HeadlessScript 形式打包进 Ghidra,负责清单、反编译与交叉引用。主程序只经一条AF_UNIX私有套接字通信,每个请求携带进程级随机 token,脚本侧用hmac.compare_digest比对后放行——hopper_bridge.py 第 1352 行。就像前台只跟门禁对讲机说话,不直接进机房。

用数字验证解耦:整个 bridge/ 36 个文件,src/ 是 3557 个 TS 文件。引擎升版那天,你要动的只是 36 个里的一两个。

两类使用者 📦:Agent 装配置,人读文档

AI Agent:装 MCP 长连接加技能包

setup命令把 MCP 服务器(rea mcp启动的 stdio 长驻进程)和技能包一起注册进 Claude Code、Codex、Cursor 等客户端,已有配置会先备份:

npx rea-agents setup

技能包源码在.agents/skills/reverse-engineer-anything/,构建后随 npm 包发布,教 Agent 何时先跑doctor再跑分析、如何分步推进任务。

人类开发者:读 docs/ 里的三篇就够

docs/installation.md 覆盖安装、Hopper/Ghidra/IDA 配置与手动 MCP 注册;Linux 用户要看 "Linux owned-process prerequisite" 一节,ps不在PATH上时恢复方法写在那里。docs/mcp-contracts.md 是自动生成的工具目录与契约详解,CI 会校验它与源码一致。分层架构对照着读 docs/architecture.mermaid。

能抄走的设计决策 🧰

  1. 入口只路由:scripts/rea.mjs 296 行只做参数分发,分析逻辑一行不写。为什么:任何下游层重构都碰不到入口。你能怎么抄:bin 脚本只认首参加载运行时,其余职责全删。
  2. 桥接脚本进引擎进程:主程序经认证套接字跟引擎内的小脚本对话,不改引擎本体。为什么:外部依赖的版本漂移被锁在桥脚本一侧。你能怎么抄:封装第三方工具时送一个只讲 NDJSON 的无状态脚本进去,别 fork 工具。
  3. 契约先于输出:src/contracts/ 119 个文件用 Zod 锁死所有工具的输入输出,工具目录自动生成并被 CI 校验。为什么:Agent 消费 JSON 时信结构而非措辞。你能怎么抄:给每个对外命令定 schema,CI 对比生成文档与源码。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询