REA(reverse-engineer-anything)是一个面向已发布软件产物的逆向调查技能,用于在主张依赖于实际发布的应用程序、二进制文件、包或运行时证据时提供调查指引。它本身是一组指导说明,不注册 REA MCP 服务器、不安装分析引擎,也不向已运行的智能体添加工具。
用途与适用场景:适用于反编译、有证据支撑的功能追踪、版本对比,以及调查引导的重建。当分析对象是已发布的二进制或包、需要被动应用运行时证据,或需要与现有源码未确立的行为进行对比时使用。对完整源码仓库的常规分析应使用普通仓库工具,不应运行 REA。
主要能力与工具路由:技能根据用户提供的目标选择首个工具。ASAR 或提取出的 JavaScript/Electron 树使用 analyze_javascript_application;归档/包成员清单(ZIP/APK/IPA/MSIX/AppX 或 DMG)使用 open_binary,必要时用 inspect_artifact;Android APK 代码、类、方法或引用使用 inspect_android_package;托管 PE/CLI 程序集使用 inspect_managed_artifact;固件镜像在可用时使用 inspect_firmware_regions,需要提取时用 extract_firmware;.NET NativeAOT PE/ELF 使用 Ghidra 原生分析;已打开的用户自有浏览器页面使用 list_browser_targets;保留的 HAR/mitmproxy 捕获使用 inspect_web_network_capture;已打开的用户自有 Electron 运行时使用 list_electron_targets;显式本地 EVM 字节码载体使用 inspect_evm_interface;离线 Linux ELF 布局、符号、重定位或静态缓解证据使用 inspect_binary_layout;提供的 Linux x86-64 ELF core 使用 inspect_recorded_crash;原生可执行文件、库或分析数据库使用 open_binary 后再用聚焦分析工具。
使用方式:若 REA 工具可用且注册未过期,直接进入目标,不要每次调查前运行诊断或安装。使用已连接服务器的实际工具列表和输入模式。当工具缺失或注册过期时,先进行只读诊断,例如对 Codex 运行 npx -y rea-agents@latest doctor --client codex --json,并替换为当前支持的客户端 ID。区分原因:注册缺失、格式错误或过期需要限定范围的配置修复;注册对齐但当前会话无工具需要重启/重连;缺少提供方只影响需要该提供方的任务。配置修复前应准备只读计划(setup --dry-run --json),展示拟议路径、备份和更改,获得批准后再应用(setup --client codex --yes)。只有明确需要并获批准时才添加 --install-hopper。REA 安装不会安装或升级 Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk、Unblob 等前置软件。不支持客户端时可使用手动 stdio 注册固定版本的 rea-agents 包,或继续通过 CLI 操作。一个具体的 CLI 回退示例为:npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json。
工作方式:以摘要优先,先使用默认结果及其内联证据和图上下文;不重复相同工具调用,仅在返回结果留下具体未答问题时做聚焦跟进。对于跨多个功能或子系统的请求,采用分阶段工作流:将请求转为问题清单及每个答案所需证据;检查当前 REA 会话、产物身份、已保存分析数据库、书签和先前证据,复用匹配状态;从最小有用概览或清单开始,沿入口点追踪数据与状态变化;在代码影响问题时同时检查打包资源和配置;用所需证据类型佐证结论,仅在静态证据无法回答且具备所需主机运行时和 OS 访问时才使用运行时观察;将工作分解为独立问题,可并行时分配不同范围;维护简洁发现账本,将每个结论链接到证据 ID、置信度/证据类型、搜索边界和剩余未知项;完成前复查原始清单,将每个问题标记为已答、部分已答或未解决。
限制:该技能只提供调查指导,不注册 REA MCP 服务器或安装分析引擎。原生分析是否可用取决于所选提供方、主机和目标格式;Hopper 是单独许可的软件,Ghidra 和 IDA 需自备。静态分析不能确立运行时行为或还原原始源代码;应报告提供方特定覆盖范围、部分结果和未知项。REA 在本地运行分析,但连接的大模型提供方可能有独立的数据处理政策。每个结论必须区分观察、推断和未知,引用证据 ID,保留限制和不完整覆盖,不得暗示静态分析观察到了执行。运行时请求会执行声明的目标及生命周期,不得扩大目标或动作范围。完成调查后可用 close_binary 关闭已打开的原生会话。