REA
当一个论断依赖于已发布的二进制文件或包、反编译、被动应用程序运行时证据,或与现有源代码无法解释的行为进行比较时,请使用REA。对于完整的源代码仓库的普通分析,请使用常规仓库工具,不要运行REA就绪检查或提供者命令。
仅在需要时连接
安装此技能会提供指令;它不会注册REA MCP服务器、安装分析引擎或向已运行的Agent添加工具。
如果REA工具可用,并且其注册状态已知未过期,请直接处理目标。不要在每次调查前运行诊断或设置。使用已连接服务器的实际工具列表和输入模式;从仓库主分支安装的技能可能描述较旧npm版本中不存在的功能。当服务器不声明保留引用时,请保留完整的内联证据。
如果工具缺失、调用被客户端阻止或所需提供者不可用,请阅读连接和恢复。诊断观察到的阻塞器,继续有用的支持工作,并在修复后恢复原始任务。客户端批准、shell PATH、注册和引擎可用性有不同的解决方法;避免为所有问题重复设置。
- 在不更改REA或客户端配置的情况下进行诊断。
npx可能会下载包并写入npm缓存。对于Codex,运行npx -y rea-agents@latest doctor --client codex --json。替换当前支持的客户端:claude_code,claude_desktop,codex,cursor,gemini_cli,windsurf,devin,opencode,antigravity,copilot_cli,commandcode,vscode,grok_build,omp, 或grok_bot。grok_bot没有本地文件注册:doctor报告Grok Bot聊天步骤,设置不会写入mcp.json。如果客户端未知,请使用doctor --json并在选择设置范围之前检查其注册结果。 - 区分原因。缺失、格式错误或过时的注册需要范围限定的配置修复。活动会话中对齐的注册但没有工具需要重启/重新连接;doctor无法证明当前Agent已连接。缺失的提供者仅影响需要该提供者的任务:静态JavaScript检查既不需要Hopper也不需要Ghidra,而Android检查有独立的自带JADX/Java先决条件。
- 对于配置修复,准备只读计划:
npx -y rea-agents@latest setup --client codex --dry-run --json。 使用当前客户端的ID,显示其确切建议的路径、备份和更改,并在设置写入配置或安装Hopper之前获得批准。设置通常会一起安装匹配的捆绑技能;在审查的计划中包含该替换。在批准后,使用npx -y rea-agents@latest setup --client codex --yes应用相同的范围。仅在需要并且明确批准单独安装时添加--install-hopper。 - 重启/重新连接受影响的Agent。验证REA工具确实出现在会话中,然后恢复原始调查。如果它们仍然不存在,请检查客户端的MCP启动错误,而不是重复设置。
REA设置从不安装或升级Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk或Unblob。使用现有的先决条件;不要安装不相关的软件来修复MCP注册。对于不受支持的客户端,使用版本固定的rea-agents包的manual stdio注册,或通过CLI继续。
对于由操作员提供的JavaScript树或ASAR的具体CLI后备方案是:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
不需要MCP注册或原生引擎。以与MCP结果相同的谨慎态度阅读返回的Evidence、图形、限制和未知因素;CLI直接返回Evidence记录。此后备方案不证明MCP已配置。原生CLI任务仍需要其选定的引擎。优先使用现有的rea CLI。当未安装且REA包的获取在授权范围内时,使用npx -y rea-agents@latest代替。配置修复从只读设置计划开始;在应用授权的更改之前显示路径、备份和技能替换。保留现有的批准和目标执行边界。REA设置从不安装或升级不相关的软件,包括Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk或Unblob。
首先路由目标
从用户提供的目标中选择第一个工具。对于活动目标原生或归档工作流,使用open_binary;无目标工具有自己的显式路径或端点,不需要它。
-
ASAR或提取的JavaScript/Electron树:
analyze_javascript_application。 -
归档/包成员清单(ZIP/APK/IPA/MSIX/AppX或DMG): 使用提供的本地路径的
open_binary;当图形和发现有助于回答问题 时,使用inspect_artifact。 -
Android APK代码、类、方法或传入引用:
inspect_android_package,然后在可用时使用有针对性的Android工具。 归档成员清单仍然使用上面的归档路由。 -
托管PE/CLI程序集:
inspect_managed_artifact。 -
固件镜像:
inspect_firmware_regions(当可用时)。当需要提取时,使用调用者选择的新绝对输出目录使 用extract_firmware。这些工具在Linux上使用调用者提供的Binwalk/Unblob;请参阅固件指南。 -
.NET NativeAOT PE/ELF:原生Ghidra分析。原生代码可以生成伪代码; 有关可选的元数据恢复及其支持的主机/布局边界,请参阅
references/native-and-artifacts.md中的NativeAOT工作流。 -
用户拥有的已打开的浏览器页面:
list_browser_targets。 -
Agent必须执行的浏览器操作(单击、输入、导航): 使用声明的动作的
capture_browser_scenario。有关连接/启动 以及有针对性的后续浏览器工具,请参阅运行时观察。 -
Fiddler Everywhere流量或原生
.saz捕获:阅读 Fiddler工作流。 使用inspect_web_network_capture和format: "saz"检查保存的SAZ; 连接Everywhere的单独MCP服务器以获取实时流量。 -
保留的HAR/SAZ/原生mitmproxy/aioquic qlog捕获:
inspect_web_network_capture。选择 有用的原始记录序数;检查生产者字段和字节/数字 sidecar,无需获取记录的URL或声明实时归因。有关确切的 上游配置文件和凭据排除,请参阅历史捕获。Qlog支持从aioquic 1.5.0 JSON 0.3开始;流覆盖范围和端点丢失声明不会恢复 主体或确定网络丢失。优先选择详细摘要,然后选择kind qlog跟踪/流 页面;选择一条跟踪、流ID和方向以获取贡献/范围页面。 事实保留所有记录事件在选择之前的作用域。其他qlog布局 和PCAP关联不受支持。 -
用户拥有的已打开的Electron运行时:
list_electron_targets。在尝试electron-main Inspector之前,使用inspect_electron_fuses检查打包的保险丝;禁用的EnableNodeCliInspectArguments意味着应用程序忽略--inspect。 -
数据包字段发现:
inspect_packet_fields搜索安装的协议 和字段名称/类型,然后为inspect_packet_capture选择字段。 查询/分页相关记录;注册不建立观察到的流量。 -
记录的数据包捕获:
inspect_packet_capture选定的TShark字段、 显示过滤器和decode-as规则。需要Linux、util-linux prlimit和REA_TSHARK_COMMAND;请参阅 捕获指南。 数据包限制在过滤前计算输入数据包。输出默认为50个匹配 帧;使用match_offset/match_limit进行后续分页,或使用显式null限制进行完整匹配输出。跨页面保留源摘要。这不执行实时捕获。 对于地址/DNS/SNI/协议摘要,使用带有MCP详细摘要的inspect_pcap_capture,然后保留kind pcap页面。需要Wireshark 4.x tshark和capinfos,以及Linux prlimit或Windows作业对象;请参阅数据包摘要。选择完全相同的DNS问题以获取地址页面;页面耗尽不证明网络完整性。这读取记录,不获取流量。 -
解码器发现:
inspect_signal_decoders搜索安装的解码器ID 或选定的解码器帮助,包括通道和选项。在选择设置之前查询并分页相关详细信息;这不扫描硬件。 -
记录的逻辑/信号跟踪:
decode_signal_recording,带有显式解码器、 通道和协议设置。在带有util-linux prlimit的Linux上,通过REA_SIGROK_COMMAND提供sigrok-cli 0.7.2;请参阅记录指南。输出默认为50个文字行;使用line_offset/line_limit选择注释类并分页,或使用显式null获取所有剩余输出。窗口计数是显示行,而不是注释或样本。跨页面保留源摘要。这读取现有文件;它不获取硬件信号。 -
显式本地WebAssembly工件:
inspect_wasm_artifact。通过REA_WABT_BIN_DIRECTORY提供WABT 1.0.42;保留确切的字节/工具标识和解码的WAT。显式选择JavaScript胶水和候选路径,并保留URL/路径歧义。无隐式获取或目标执行;WAT不是原始源代码。请参阅WASM指南。 -
显式本地EVM字节码载体:
inspect_evm_interface,带有调用者选择的raw或hex编码。保留载体/解码摘要,并将选择器、参数字符串和可变性视为推断的候选;这不执行链查找或目标执行。对于没有十六进制或重复stdout的完整推断接口,发现支持并选择detail: "summary";完整的Evidence保留在其原始标识下。使用返回的parent_evidence_id进行精确函数或bytecode_hex/stdout/stderr页面。候选覆盖率不建立接口完整性。请参阅EVM字节码指南。 -
嵌入的Go编译器、模块或构建设置元数据:
inspect_go_binary带有显式本地文件。这种内置的无目标检查需要 无Go安装或反汇编器。保留原始模块字节和源代码范围; 缺失的元数据不证明二进制不是Go,未解析的文本记录 保持显式。请参阅Go二进制指南。 -
嵌入的cargo-auditable Rust依赖元数据:
inspect_rust_binary带有显式本地ELF、PE或瘦Mach-O文件。这种内置的 无目标检查需要无Rust安装或反汇编器。保留 包顺序、依赖索引和节文件范围。缺失.dep-v0节是空元数据,不证明二进制没有依赖项。 rustc提交哈希是从只读/rustc/<40-hex>/路径推断的。请参阅Rust二进制指南。 -
显式本地SQLite数据库快照:
inspect_sqlite_database。使用提供原生SQLite限制的Node.js 24.x >=24.15或26+进行检查。首先读取模式(默认紧凑清单),或当需要行时选择精确的普通表和columns。默认值是选定表的模式和20行;请求schema_scope: "database"以获取完整的存储模式。保留数据库和现有同级WAL身份;行样本报告截断并具有未指定的顺序。使用静态快照,而不是假设实时数据库/WAL对是原子复制的。请参阅SQLite指南。 -
显式Linux ELF文件以获取离线布局、符号、重定位或静态缓解证据:
inspect_binary_layout。此无目标操作使用调用者提供的pwntools,无需打开反汇编器数据库。保留其原始位置和推理/覆盖率限制;请参阅离线二进制指南。 -
提供的Linux x86-64 ELF核心转储:
inspect_recorded_crash。读取每个记录的线程、原始注释和源绑定寄存器,无需打开实时目标。历史PID不选择实时进程。仅当仅核心的映射候选有帮助时才请求include_debugger_context;请参阅记录崩溃指南。 -
PE资源类型/名称/语言树和静态图标组引用:
inspect_pe_resources带有显式路径。此可移植操作需要 无活动目标或引擎;不透明有效负载保留文件范围和SHA-256。 -
原生可执行文件、库或分析数据库:
open_binary,然后 直接使用有针对性的分析工具;当元数据或 清单上下文有用且可从选定提供者获取时,调用binary_overview。
对于现有的IDA MCP配置,使用带有原始输入二进制文件和provider_id: "ida"的open_binary;不要传递.idb或.i64数据库。遗留的附加配置文件通过SHA-256绑定已经打开的GUI输入,并使其数据库保持打开。现代h
…
[译文已截断]