Skip to content

feat(re): cyber-re 原生工具环境、CLI/MCP 接入与 Skills #176

Open

Description

@M09Ic

目标与当前状态

cyber-re = cyber-harness 原生 Profile + 逆向工具环境 + 通用 CLI/MCP 接入 + Skills。

cyber-harness 提供共享 workspace、文件/终端、工具发现、既有 Agent loop、Session、后台任务与可选观测;AI 根据任务选择工具、打开或切换目标、编写脚本、组合结果。分析方法、evidence、报告组织与目标核对通过 prompt / Skill 引导。

2026-10-12 修订:本版替换此前“受管理目标绑定 + 只读分析子集 + 强制证据归档”方案。首版重点是工具环境、入口接线和使用说明,不新增 Binding/Investigation/EvidenceStore、统一 RE runtime 或第二套 Agent loop。关联 #148;#175 的观测能力可以独立组合。

  • feat(mcp): map MCP tools to schema-derived bash commands #177 已实现通用 stdio / Streamable HTTP MCP→harness bash 命令:分页目录、完整 schema、参数转换、JSON/file 输入、原始 MCP result、错误反馈、连接关闭与失败回滚。PR 当前仍开放,尚未合并。
  • 已有 Windows x64 / JBR 21 / 原版 jadx-headless-mcp 0.7.1 的真实引擎验证,以及 gpt-6.1-sol → StandardLoop → bash → JADX MCP 的 UnCrackable L1、ApiDemos LoaderCustom 任务。模型自行发现工具、恢复调用错误并卸载 APK,见验证记录。
  • 独立 cyber-re 发行、工具包选择、RE Skills,以及其他引擎/平台/运行时场景的实际验收待完成。以下清单是接入路线,不能视为全部已集成或已验证。

本次检查了 harness/#177、REA 源码与相关上游工具说明,未重新运行真实引擎或模型任务。

1. 执行入口与 Skill 分开描述

CLI、MCP、脚本/API、交互式会话描述的是如何执行;Skill 描述的是如何使用。两者可以组合,同一工具可能同时具有多种执行入口和配套 Skill。

形态 实际调用 cyber-re 接入方式 需要说明的差异
普通 CLI PATH/绝对路径程序、参数、stdin/stdout/stderr、退出码 现有 bash/process;可用 Arsenal 安装适合的资产 各工具自己的参数、JSON 开关、编码、cwd 与输出目录
harness 原生命令 CommandRegistry 中的命令 现有终端路由与扩展贡献 不一定有对应磁盘 executable,外部 shell 不会自动获得它
MCP tools stdio 或 Streamable HTTP 服务,原工具名和 inputSchema #177 通用 MCP extension 映射为服务别名/子命令 连接持续时间、目录快照、server 状态、路径所在机器与上游版本
脚本 / SDK / API Python、Node、Java、IDAPython、r2pipe 等 bash 执行脚本,使用已安装的 runtime/library 依赖与引擎入口单独安装;内部 MCP 别名不自动成为 SDK
交互式工具 / GUI bridge 调试器、设备、浏览器、已有应用会话 terminal/PTY/后台工作,或工具已有 bridge/MCP attach/launch、当前进程/database/device、会话复用与退出方式
Skill / references 模型按需读取说明和场景参考 既有 Skill Store、发行 Bundle 与本地覆盖 不安装程序、不注册 MCP,不保证文档中的工具已在当前环境可用

不要求给所有 CLI 再包装 MCP,也不把每个工具改成 re decompile / re xrefs / re evidence 等统一代理。优先保留原名称、原参数与原返回格式;有具体能力缺口时才增加实现。

2. 工具清单与实际入口

“目录已有”指当前 Arsenal catalog 有资产描述,不代表已选入 cyber-re 默认包、已安装或完成真实分析验收。“拟接入”指可选路线;用户现有工具也可以直接使用。

场景 / 工具 原生入口与用途 接入、依赖与当前状态
基础宿主:files、bash、tmux、Skills 文件操作、命令/脚本、后台工作与会话输出 底座已有;tmux 是 harness 命令,不要求系统 tmux;浏览器等能力按 Profile 选择
检索:rg、ast-grep CLI;文本与结构检索,适合源码、解包结果、JS Arsenal 目录已有;分别按实际平台资产选择
格式与符号:file、strings、readelf、objdump、nm 系统 CLI;格式识别、字符串、节区、符号、反汇编 使用已有系统工具/工具链;Windows 不假定都在 PATH
解包:7-Zip CLI;归档与 APK 等容器提取 catalog 名为 7zz,当前 Windows 资产 executable 是 7z.exe;文档说明实际入口,不假定跨平台同名
radare2 / Rizin CLI/交互式;可选 r2pipe 或相应脚本接口 目录已有,当前目录的两者均为 Windows amd64 资产;Rizin 可选替代;r2blob 不包含 r2ghidra
capa、FLOSS CLI,支持 JSON;能力规则匹配与字符串提取 目录已有 Windows/Linux amd64 资产;不把它们当反编译器或运行时证明
GoReSym、redress CLI;Go 符号、类型与 runtime metadata 恢复 目录已有 macOS/Linux/Windows amd64 资产;redress 可选,分发时处理 AGPL 条件
UPX CLI;识别/解包 UPX 目录已有 Windows amd64 可选资产;对输入修改和保留方式通过 Skill 引导
YARA / YARA-X CLI / 规则 / API;匹配与分类 拟接入可选工具;规则、runtime 和具体版本分别说明,不默认属于 MCP
JADX 标准发行 jadx CLI / GUI;Java 反编译和输出文件 拟接入 CLI 路线;Java 与多文件发行按上游安装;和下一行的 MCP JAR 是不同产品入口
JADX headless MCP Java JAR 启动 MCP;load/unload、classes、methods、xrefs 等 #177 已真实验证 0.7.1 + 两个 APK;建议服务别名 jadx_mcp,避免遮蔽 jadx CLI;其他输入/HTTP 模式另验
Apktool CLI / JAR;resources、manifest、smali 解码与重建 拟接入 Android 补充工具;和 JADX 的 Java 反编译互补,需要 Java
ADB CLI;设备选择、应用/文件/进程、logcat 等 拟接入运行时套件;需要 Android platform-tools、可用设备及对应连接
Frida tools frida / frida-trace / frida-ps CLI;Python API 与 JS 脚本 拟接入动态分析;目标侧组件、版本和连接按上游要求;本身不等于 MCP
IDA / ida-pro-mcp IDA GUI/批处理、IDAPython/idalib;可选已有 MCP proxy/supervisor 自备 IDA、Python、许可证与服务;MCP 可直接接入;headless/attached 的命令、database 参数与 worker 行为按所用版本说明
Ghidra analyzeHeadless、Java/Python scripts;可经 REA CLI/MCP bridge 自备 Ghidra/JDK;Ghidra 本身不是默认 MCP;先复用已有 bridge,不另写同义 server
Hopper 应用内 Python bridge;可经 REA CLI/MCP 自备应用/许可证;REA 的 bridge、document 与平台支持按其契约;待实际验收
REA CLI + MCP + 配套 Skill;native、artifact、JS、Android 等入口按发布包目录发现 可选 gateway/工具;rea mcp 或已安装 package dispatcher 启动服务,CLI 子命令单独使用;需要 Node,深度分析另需对应引擎
.NET / ILSpyCmd ilspycmd dotnet tool CLI;可选 decompiler library 拟接入 managed 反编译;自备 .NET runtime/tool;REA 的 metadata/CIL 观察不等于 C# 反编译
JS / Electron REA CLI/MCP、ASAR CLI/Node scripts、rg/AST/source map 工具 拟接入场景组合;区分 main/preload/renderer、JS 与 native addon;不要求先打开 native provider
固件:Binwalk / Unblob Binwalk CLI;Unblob CLI/Python API;识别与提取 拟接入 Linux/容器路线;当前 Binwalk v3 是 Rust 工具,Unblob/提取链有外部 extractors,不承诺 Windows 原生覆盖
调试:GDB / LLDB / pwndbg CLI、GDB/MI、Python API;pwndbg 是调试器插件 拟接入交互式套件;持续会话、core dump 与 live process 分别说明;pwntools 是可选 Python library
浏览器 / Web runtime harness playwright 命令;外部 Playwright CLI/SDK/CDP;可选 REA capture harness 同名命令基于 go-rod,不能套用 Microsoft Playwright CLI 参数;各入口的 browser/session/endpoint 独立配置
网络与离线捕获 tshark CLI、mitmdump CLI/addon scripts、HAR 解析脚本 拟接入 PCAP/协议/HTTP 观察;依赖、捕获或离线读取模式分别说明,不默认包装成 MCP
WASM / EVM / 特殊资源 REA 已发布目录中的对应能力,或格式专用 CLI/脚本 按具体任务补充;格式解析、反汇编与源码重建的覆盖分别验证

工具清单覆盖的场景可以逐步增加;默认包选择保持独立。不因列入清单就默认安装所有引擎,也不以宿主 Go 可交叉编译推导工具跨平台可用。

3. 调用方式、配置与发现

普通 CLI 与脚本

由 bash 直接调用实际安装入口,参数遵循工具自己的 help。以下展示执行方式,不是统一的 RE 命令协议:

jadx --help
apktool --help
ilspycmd --help
capa -j sample.exe > capa.json
floss -j sample.exe > strings.json
rea analyze-javascript-application /absolute/path/app --json > app.json
python analysis.py

rea CLI 的连字符子命令与 MCP 的下划线工具名可能不同。脚本/API、CLI/MCP 支持范围也不必一一相同,应分别给出真实入口与示例。

MCP → harness bash

复用 #177 的 mcpServers 配置。以已验证 JAR 为例:

{
  "mcpServers": {
    "jadx_mcp": {
      "command": "/path/to/java",
      "args": ["-Xmx512m", "-jar", "/path/to/jadx-headless-mcp-0.7.1-all.jar"]
    }
  }
}

需要既有 Java 17+;已验证环境为 JBR 21。Windows 填写实际可执行入口,例如 java.exe;Node/npm 的 .cmd shim 不能假定可被直接 exec,可改用 node.exe 加已安装包入口。服务也可以按 #177 文档配置 Streamable HTTP URL、headers、cwd/env 和 timeout。

同一个长期运行 Profile 内:

jadx_mcp --list
jadx_mcp load_apk --help
jadx_mcp load_apk --path '/absolute/path/app.apk' --threads 1 --resources lite
jadx_mcp list_classes --offset 0 --limit 10
jadx_mcp unload_apk

# 另行配置 ida / rea_mcp 后,按上游实际目录发现
ida --list
ida idb_open --help
ida idb_list
rea_mcp open_binary --help

jadx_mcp、rea_mcp、ida 是配置选择的服务别名。它们不生成 PATH 可执行文件;外部 Python subprocess、独立系统 shell 和容器不会自动获得这些命令。需要外部脚本访问时,使用工具原生 CLI/SDK/MCP client,或以后基于真实需求补通用宿主入口。

#177 的能力边界:

  • --list 展示启用工具;<tool> --help 提供完整上游声明。命名 flags 按 schema 编码,复杂输入可用 --json / --file,原工具名和参数拼写保持不变。
  • stdout 返回完整原始 MCP result JSON,包括 mixed content、structuredContent、metadata;错误/partial result 保留,由既有执行反馈呈现,不统一改写成 Evidence DTO。
  • 目录在 Profile Load 时获取,上游目录改变需重载。当前处理 tools,不接入 resources/prompts、sampling、elicitation 或 legacy HTTP+SSE;server instructions 不自动变成 system prompt。
  • 可选 tools allowlist 属于用户配置;省略/null 表示全部,空数组表示空目录。默认不因“逆向分析”隐藏 load/open/switch/close、script、patch 或 debug 工具。
  • 生命周期和 database 选择由 AI 按上游实际命令操作;同一 Profile 的多个 Agent Session 可能共享服务状态,使用显式句柄、多个服务配置或独立 Profile 取决于任务和工具能力。

Skill 加载

沿用 harness 的发行 Bundle、.cyber/skills/、.agent/skills/ 和 CLI 显式 Skill 路径。同名覆盖使用既有优先级,长工具说明与场景参考按需读取。

REA 已提供 reverse-engineer-anything Skill,安装命令 npx skills add morluto/rea --skill reverse-engineer-anything 只安装说明,不安装 REA/引擎、不注册 MCP。其上游目录名 .agents/skills 与 harness 当前自动扫描的 .agent/skills 不同;发行 Bundle 或显式路径接入即可,不假定安装后会自动发现。

4. 原生 infra 与 REA 借鉴边界

flowchart TD
    P["cyber-re 原生 Profile"] --> B["BaseExtensions: files / bash / skills / provider / events"]
    B --> A["可选 Arsenal / 工具环境"]
    A --> M["通用 MCP extension"]
    M --> L["既有 Loop / Session"]
    L --> H["CLI / Web / node 与可选 observer"]
    B --> C["PATH CLI / scripts / 交互式工具"]
    M --> E["JADX / IDA / REA / 其他 MCP"]
Loading

发行组合根负责 Profile、工具配置、Skill Bundle 和实际资产。复用 pkg/profile.Profile、harness.New、Extension Set 与既有 loop;通用 MCP/terminal/Arsenal 留在通用层。首版不需要 exts/re、tools/re 领域框架、EngineManager 或 host-private lifecycle catalog。

独立 re/ 发行模块可沿用合并后的 audit 分发约定;具体目录跟随仓库现行结构,不把旧 cmd/re 布局当作架构要求。CLI/Web/节点共用装配。既有 Subagent 接线可直接复用,也可显式装配最小 Loop/Session;不增加“先建立目标 Binding 才能委派”的前置条件。

从 REA 参考:

可参考的机制 cyber-re 的采用方式
CLI/MCP 共用能力实现,provider 与运行 client 分开 多入口共用 Profile;配置/help 与实际分析启动分开
adapter、protocol、process、filesystem 分工 使用已有工具;确有缺口时改进相应通用执行原语
primitives、可发现能力与 limitations 保留原工具目录,通过 help/status/错误反馈让 AI 组合
自有进程、内部 project 与 cleanup 的所有权 只管理实际创建/持有的资源,关闭失败保留重试能力
Evidence、coverage、Unknown、分析方法 参考其 Skill;宿主原样返回 REA 输出,不要求所有工具复制其领域模型

REA 本身具有 CLI、MCP、providers 和内部资源管理,作为可选工具保留其原契约。直接使用 IDA/JADX/CLI 不自动获得 REA 的 metadata/overload 语义、Evidence 或进程管理保证。

共享 workspace 与 Ghidra project 是不同层次。 workspace 是 AI 和工具使用的文件目录;Ghidra project 是 Ghidra 保存导入 Program/分析数据库所需的引擎容器。原生入口例如 analyzeHeadless <project-dir> <project-name> -import <target>,可以由 AI 选择已有或临时 project。REA 当前的目标快照、私有运行目录、headless bridge 与临时 Ghidra project 是其内部实现,不成为所有 cyber-re 工具的统一要求。

不要求分析前复制/hash/register target,不规定一个 Profile 只能对应一个样本,不在宿主校验每次请求的 database 是否属于某个调查。输入、解包目录、脚本、报告和分析数据库继续使用共享 workspace 或用户指定位置;文件组织由 Skill 建议。

资源关闭仍是工程职责,但依据真实归属:

  • terminal 管理自己启动的工作、后台状态与实际退出;MCP extension 管理自己的连接及直接 stdio 子进程。
  • load/open/unload/close 等业务工具向 AI 正常公开;REA 的内部 project/worker 由 REA 按自身契约处理。
  • HTTP server、用户 GUI、持久数据库与上游 detached worker 不因 MCP client 关闭就被证明已释放;不能杀不属于自己的进程或删除用户产物。
  • 保持 Extension Set 逆序关闭、ErrCloseIncomplete 与重试语义;取消等待和底层任务停止分别呈现。需 process group/Windows Job 等机制时,在实际后端补足并验收。

5. 工具交付与执行环境

每个工具补齐安装/配置文档与可运行示例即可,不先设计统一 Engine DTO 或新包管理框架。说明至少包括:

  1. 工具名称、上游来源、版本/安装渠道、实际 executable/JAR/package/URL;区分工具名、MCP alias 和 Skill 名。
  2. 支持的执行入口及 help/调用示例;CLI 参数、MCP schema、API/脚本入口分别描述。
  3. runtime、插件、规则、外部 extractors、宿主软件/许可证、平台与架构。
  4. cwd、输入/输出路径、stdin/stdout、编码、当前目标/database/device/session,以及保存/关闭方式。
  5. 对应 Skill/references、已做的真实验证和仍未覆盖的功能。

分发按实际形态处理:

  • 普通 CLI 资产:复用 Arsenal catalog、bundle 与既有安装机制;默认集、可选集和用户 PATH 工具分开配置,不复制版本表。
  • JAR/多文件/dotnet/Python/npm/bridge:提供对应 runtime 和真实入口说明,支持用户已有安装;不能把 Ghidra/REA/JDK 等伪装成一个单文件二进制塞进普通 CLI 安装器。
  • MCP 服务配置:只声明实际 command+args 或 URL、env/cwd/timeout、可选 tools;工具安装与服务注册分开。发布示例固定可复现版本,避免用 REA main 的工具清单承诺旧 npm 包也支持。
  • 可选 Linux 镜像/远端节点:复用原工具和 harness 节点能力。server 访问的是其所在机器的路径;容器需要挂载/容器内路径,设备需要实际连接。设置 cwd 不会自动重写所有 schema 路径。
  • Skills:随发行或用户配置加载;可以使用 REA Skill 或 cyber-re 场景说明,遵循 harness 的发现/覆盖规则。

可提供工具配置诊断,报告缺失依赖、版本和连接错误;不要求每次分析先运行 doctor 或注册目标。安装步骤使用既有显式配置,不在普通工具调用中偷偷安装/升级引擎。

6. Skill 与观测

默认逆向 Skill 可以引导:先读 help/status;确认正在使用的文件/database/runtime;按任务组合引擎;必要时保存副本、摘要和关键输出;区分反编译、静态关系、推断与运行观察;说明未知事项;使用后关闭自己打开的临时会话。

这些要求属于 prompt。不设置 mandatory evidence manifest、统一结果 schema、Evidence commit、报告 validator 或分析调用 gate。 AI 可以根据任务调整方法,用户可以覆盖 Skill;未按某种证据格式写文件不会使工具调用被拒绝。

既有 Session/AOP/Artifact 和可选 #175 观测继续记录运行与访问产物,不承担领域证据认证。REA 返回 Evidence 时原样传递;普通 CLI 允许文本、JSON、文件或脚本结果。质量通过任务评估与 Skill 迭代改善。

7. 实施顺序与验收

P0:原生 Profile 与首条可用路线

  • 合并/复用 feat(mcp): map MCP tools to schema-derived bash commands #177;独立 cyber-re Profile/发行入口,接线共享 workspace、terminal/files、既有 loop/Session、MCP 配置与 Skill。
  • 确定最小 CLI bundle 与可选工具清单;补实际平台资产及安装/help 文档。
  • 将已验证 JADX MCP 路线接入发行配置,使用 jadx_mcp 等独立 alias;保留原 load/unload/查询工具。
  • 分别说明普通 CLI、内部命令、MCP alias 与外部脚本的执行边界,验证 Windows 启动入口和含空格路径。

P1:多工具组合

  • 接已有 IDA MCP 与已发布 REA/Ghidra 路线;分别验收 native 引擎、headless/GUI 模式和资源归属。
  • 补 JADX CLI、Apktool、ILSpyCmd 等互补入口与对应 references;不为它们先统一包装 MCP。
  • 用 APK→JNI、native、Electron 等代表任务检验 AI 的发现、纠错、目标切换与跨工具组合。

P2:扩展执行域与场景

  • 按需求补 Frida/ADB、调试器、固件 extractors、浏览器、网络及其他格式工具。
  • 复用既有远端/容器/委派能力;根据真实缺口改善通用连接、后台会话或进程监督。
  • 按具体工具/平台维护真实验收记录与 Skill,工具清单和默认包独立演进。

工程验收关注 catalog/schema、参数与返回保真、cwd/路径、stdout/stderr/退出码、错误反馈、后台状态、取消、失败初始化回滚与自有资源 Close/重试。测试不把“遵循分析方法”变成前置条件。

Agent/Skill 验收关注代表任务中的工具选择、操作恢复、跨工具组合与结果准确性,可使用人工或源码/oracle 核对。真实工具/模型任务与模拟协议测试分开报告;已有 Windows/JADX 基线不外推为 IDA/Ghidra/Hopper/HTTP/设备或其他平台已验证。

参考

Activity

  1. changed the title [-]feat(re): 独立 cyber-re Profile 与本地二进制逆向闭环方案[/-] [+]feat(re): cyber-re 基础设施 Profile、MCP 引擎套件与分发设计[/+] on Oct 11, 2026
  2. changed the title [-]feat(re): cyber-re 基础设施 Profile、MCP 引擎套件与分发设计[/-] [+]feat(re): cyber-re 原生工具环境、CLI/MCP 接入与 Skills[/+] on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions