REA 是做什么的?
当一个论断依赖于已交付的二进制文件或包、反编译、被动的应用运行时证据,或者与未通过可用源码确立的行为进行比较时,请使用REA。对于完整源码仓库的常规分析,请使用常规的仓库工具,不要运行REA的准备就绪检查或provider命令。
仅在需要时连接
安装此技能会提供指令;它不会注册REA MCP服务器、安装分析引擎,也不会向已运行的代理添加工具。
如果REA工具可用且其注册信息未被确认为过时,请直接针对目标进行操作。不要在每次调查前都运行诊断或设置。使用已连接服务器的实际工具列表和输入模式;从仓库主分支安装的技能可能描述了较旧的npm版本中不存在的功能。当该服务器不提供保留引用时,请保留完整的行内证据。
如果工具缺失、调用被客户端阻止或所需的provider不可用,请阅读连接与恢复。诊断观察到的阻塞原因,继续有用的、受支持的工作,并在修复后恢复原始任务。客户端批准、shell PATH、注册和引擎可用性有不同的修复方法;避免对所有问题重复进行设置。
- 在不更改REA或客户端配置的情况下进行诊断。
npx可能会下载该包并写入npm缓存。对于Codex,运行npx -y [email protected] 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无法证明当前代理已连接。缺失的provider只会影响需要该provider的任务:静态JavaScript检查既不需要Hopper也不需要Ghidra,而Android检查有独立的自带JADX/Java先决条件。
- 对于配置修复,准备只读计划:
npx -y [email protected] setup --client codex --dry-run --json。使用当前客户端的ID,显示其确切的提议路径、备份和更改,并在设置写入配置或安装Hopper之前获得批准。设置通常会安装匹配的捆绑技能;在审查的计划中包含该替换。批准后,使用npx -y [email protected] setup --client codex --yes应用相同的范围。仅在需要该独立安装且已明确批准时添加--install-hopper。 - 重启/重新连接受影响的代理。验证REA工具是否实际出现在会话中,然后恢复原始调查。如果工具仍然缺失,请检查客户端的MCP启动错误,而不是重复进行设置。
REA设置从不安装或升级Node.js、npm、Homebrew、Java、Ghidra、IDA、JADX、Binwalk或Unblob。使用现有的先决条件;不要安装无关软件来修复MCP注册。对于不支持的客户端,使用带有固定版本rea-agents包的stdio手动注册,或通过CLI继续。
对于用户提供的JavaScript树或ASAR的具体CLI回退方案如下:
npx -y [email protected] analyze-javascript-application /absolute/path/to/app --json
无需MCP注册或原生引擎。像阅读MCP结果一样仔细阅读返回的证据、图、限制和未知项;CLI直接返回证据记录。此回退方案并未确认MCP已配置。原生CLI任务仍然需要其选择的引擎。优先使用现有的rea CLI。当没有安装CLI且REA包获取在授权范围内时,使用npx -y [email protected]替代。配置修复从只读设置计划开始;在应用授权更改之前显示路径、备份和技能替换。保留现有的批准和目标执行边界。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。 - 代理必须执行的浏览器操作(点击、输入、导航):使用声明的操作的
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。在有用时选择原始记录序号;检查生产者字段和字节/数字辅助数据,而不获取记录的URL或声称实时归因。有关确切的上游配置文件和凭据排除,请参阅历史捕获。Qlog支持始于aioquic 1.5.0 JSON 0.3;流覆盖率和端点丢失声明不能恢复主体或建立网络丢失。优先使用细节摘要,然后是分类qlog跟踪/流页面;为贡献/范围页面选择一个跟踪、流ID和方向。事实保留在选定之前所有记录事件的范围。其他qlog布局和PCAP相关性不受支持。 - 用户拥有的已打开的Electron运行时:
list_electron_targets。在尝试electron-main检查器之前,使用inspect_electron_fuses检查打包的保险丝;禁用的EnableNodeCliInspectArguments意味着应用忽略--inspect。 - 包字段发现:
inspect_packet_fields在选择inspect_packet_capture的字段之前搜索已安装的协议和字段名/类型。查询/分页相关记录;注册不建立观察到的流量。 - 记录的包捕获:
inspect_packet_capture,带有选定的TShark字段、显示过滤器和解码规则。需要Linux、util-linux prlimit和REA_TSHARK_COMMAND;请参阅捕获指南。包限制在过滤前计数输入包。默认输出50个匹配帧;使用match_offset/match_limit进行后续分页,或对完整匹配输出使用显式的空限制。跨页面保留源摘要。这不执行实时捕获。对于地址/DNS/SNI/协议摘要,使用带有MCP细节摘要的inspect_pcap_capture,然后是保留的分类pcap页面。需要Wireshark 4.x tshark和capinfos,以及Linux prlimit或Windows Job Objects;请参阅包摘要。为地址页面选择一个确切的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进行分页,或对剩余所有输出使用显式的空值。窗口计数是显示行,而不是注释或样本。跨页面保留源摘要。此操作读取现有文件;不会获取硬件信号。 - 显式的本地WebAssembly工件:
inspect_wasm_artifact。通过REA_WABT_BIN_DIRECTORY提供WABT 1.0.42;保留确切的字节/工具身份和已解码的WAT。显式选择JavaScript胶代码和候选路径,并保留URL/路径歧义。没有隐式获取或目标执行;WAT不是原始源码。请参阅WASM指南。 - 显式的本地EVM字节码载体:
inspect_evm_interface,带有调用者选择的raw或hex编码。保留载体/已解码摘要,并将选择器、参数字符串和可变性视为推断的候选;此操作不进行链上查找或目标执行。对于没有十六进制或重复标准输出的完整推断接口,发现支持并选择detail: "summary";完整证据在其原始身份下保持保留。使用返回的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,然后直接使用聚焦的分析工具;当元数据或清单上下文有用且可从选定的provider获得时,调用binary_overview。
对于现有的IDA MCP配置,使用open_binary,参数为原始输入二进制文件和provider_id: "ida";不要传递.idb或.i64数据库。遗留的附加配置文件通过SHA-256绑定已打开的GUI输入,并保持其数据库打开。现代headless配置使用提供程序的非交互工作流。