REA(Reverse Engineer Anything)是 Hermes 官方插件 hermes-official-plugins 中的逆向工程技能,同一插件注册 REA MCP 服务器(rea-agents@6.4.0,stdio over npx)。当结论依赖于已发布二进制或安装包、反编译、应用运行时被动证据,或需要与现有源码无法确认的行为做对比时使用;对完整源码仓库的普通分析应使用常规仓库工具,不运行 REA 就绪或 provider 命令。
使用方式 在 Hermes 中该技能随 rea 插件发布,插件已注册 REA MCP 服务器,无需另行注册,不应运行 rea-agents setup、rea setup 或 hermes mcp add rea,否则会在 config.yaml 中新增第二个 mcp_servers.rea 条目,替换插件的服务器及其固定版本。Hermes 按需加载 MCP 工具,REA 的约 170 个工具位于 tool_search / tool_describe / tool_call 桥之后,不在可见工具列表中;应按能力搜索(如 rea open binary、rea javascript application、rea android package),用 tool_describe 加载 schema,再通过 tool_call 调用。
目标路由 依据用户提供的目标选择首个工具: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 并指定新的绝对输出目录(依赖调用方提供的 Linux 上 Binwalk/Unblob);.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;PE 资源树用 inspect_pe_resources;原生可执行文件、库或分析数据库用 open_binary 后使用分析工具,必要时 binary_overview。
原生分析与结果解读 首次基于 Ghidra 的查询前应说明导入和分析大型可执行文件可能耗时数分钟;open_binary 只验证目标,不代表原生分析完成。插件允许 Ghidra 启动 900 秒、Hermes MCP 调用 1000 秒。应保持目标打开以复用分析,不要重开或另起服务器“检查进度”。生成的伪代码是解释而非原始源码,重要分支需用汇编、引用和调用方佐证,推断的函数名/类型要与制品中实际符号区分,并报告类型传播警告和缺失符号。
证据工作流 以摘要优先起步,利用结果内联 Evidence 和图上下文;对大小未知或较大的 JavaScript 应用或 ELF 布局先以 detail: "summary" 调用,再用 inspect_analysis_view 查看保留的 parent_evidence_id。遇到 resource_constraint(transport)时可查看同会话 Evidence 的摘要或单节内容,或用 export_evidence_bundle 导出完整会话。客户端截断的成功结果应视为不完整,不解析为规范 JSON。每个结论必须区分观察、推断和未知,引用 Evidence ID,保留局限,不得暗示静态分析观察到了执行。
需事先征得同意的操作 在 REA 会话内可直接调用静态分析工具;但会执行或改变会话外状态的操作需先征得用户同意并说明确切命令、应用或设备:capture_process_scenario、capture_browser_scenario、capture_electron_scenario、capture_native_ui_scenario、install_adb_package、uninstall_adb_package、push_adb_file、start_adb_app、start_adb_activity、stop_adb_app,以及覆盖已有文件的 export_evidence_bundle 或 close_binary。无人值守运行时跳过这些调用并报告待批准步骤。
适用范围与限制 适用于多特性、多子系统的分阶段调查:列问题清单、复用现有会话与证据、从最小概览入手、按假设批量操作、结合打包资源与配置佐证、仅在静态证据不足且运行时可用时做运行时观察,并维护结论与 Evidence ID 对应的发现台账。相关指南文件按需阅读:references/native-and-artifacts.md、references/javascript-applications.md、references/android-applications.md、references/runtime-observation.md、references/evidence-workflows.md。调查结束后用 close_binary 关闭会话。