mcpField
R
Reversecore_mcp

Reversecore_mcp

本地服务
github.com/sjkim1127安全2142 周前更新

关于 Reversecore_mcp

Reversecore_mcp 是面向安全分析的 MCP 服务,为 AI 助手提供逆向工程、恶意软件分析、漏洞研究、数字取证和源代码审计工具。它将多种分析后端整合为结构化工具,支持自然语言驱动的分析流程。

主要功能

  1. 01静态分析与反汇编
  2. 02恶意软件与 YARA 分析
  3. 03符号执行与污点追踪
  4. 04数字取证与 PCAP 分析
  5. 05源代码漏洞扫描
  6. 06MITRE ATT&CK 报告生成

适用场景

  1. 01分析恶意软件样本并提取 IOC
  2. 02检查二进制文件中的漏洞线索
  3. 03调查内存、磁盘或网络取证数据
  4. 04审计 Python 与 C/C++ 源代码

MCP 相关

该 MCP 服务通过 stdio 或 HTTP/SSE 接受兼容客户端连接,并提供 177 项分析工具、引导式分析提示词和 MCP 资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"Reversecore_MCP": {
"command": "uvx",
"args": [
"reversecore-mcp"
]
}
}
}
启动命令uvx reversecore-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypireversecore-mcp3.0.5
ocighcr.io/sjkim1127/reversecore_mcp:3.0.5

工具

114

收录的工具列表 · 更新于 3 周前

参数类型必填说明
languageany否可选的语言提示(例如,'c'、'python')。如果为 None,则根据扩展名推断。
file_pathstring是源代码文件的路径。

详细介绍

Reversecore MCP

Reversecore MCP

通过 Model Context Protocol 实现 AI 驱动的逆向工程与安全分析

一个 MCP 服务,让 Claude 和 Cursor 等 AI 助手能够通过自然语言执行逆向工程、恶意软件分析、漏洞研究、数字取证和源代码审计。


CI/CD Python License: MIT Tests Coverage FastMCP PyPI Docker OpenSSF Scorecard HVTrust

Watch the Demo SafeSkill Verified


目录


Reversecore MCP 是什么?

Reversecore MCP 是一个 Model Context Protocol 服务,将 177 个分析工具封装到一个统一接口中,AI 助手可以通过自然语言调用这些工具。

无需学习十几种不同工具的命令行语法,只需描述你的需求:

"Decompile the main function of this malware sample, extract all network IOCs,
 map the behavior to MITRE ATT&CK, and generate a triage report."

AI 助手会将其拆解为多个工具调用:

r2_decompile("sample.exe", "main")
  → extract_iocs("sample.exe")
    → add_mitre_technique(technique_id="T1071.001", ...)
      → create_analysis_report(template_type="quick_triage")

每个工具都会返回结构化的 ToolResult(ToolSuccess 或 ToolError),其中包含类型化数据,AI 可以据此进行推理、串联后续查询,或将结果呈现给用户。

覆盖范围
领域可执行的操作
静态分析反汇编、反编译(r2ghidra)、二进制解析(LIEF)、加壳器检测(DIE)、能力检测(CAPA)、字符串提取、固件扫描(binwalk)
动态与符号分析ESIL 仿真、angr 符号执行、污点分析、模糊测试框架生成
恶意软件分析IOC 提取、YARA 扫描、休眠后门检测、自适应疫苗生成、自主漏洞搜寻
漏洞研究危险 API 检测、ROP gadget 发现、堆利用分析、崩溃分类、PoC 生成
数字取证内存取证(Volatility3)、PCAP 分析(Scapy)、磁盘取证(Sleuth Kit)、工件关联
源代码审计Python AST 扫描、C/C++ 正则模式扫描
报告基于会话的报告(含 MITRE ATT&CK 映射)、SIGMA 规则生成、VEX 报告、邮件发送

架构

AI Client (Claude / Cursor / any MCP-compatible client)
        │  MCP Protocol (stdio or HTTP/SSE)
        ▼
┌──────────────────────────────────────────────────────┐
│                   FastMCP 3.4.4 Server               │
│          177 registered tools · Fully async          │
│                  Python 3.10–3.12                    │
├────────────────────┬─────────────────────────────────┤
│   Guided Prompts   │  Dynamic Resources              │
│  (22 analysis      │  (11 URI-based: per-binary      │
│   modes)           │   strings, IOCs, ASM, CFG, …)   │
├────────────────────┴─────────────────────────────────┤
│                  Core Infrastructure                 │
│  Config · Security · Validators · Exceptions (17)    │
│  R2 Pool · Metrics · Memory (SQLite) · Task Queue    │
│  MITRE Mapper · Evidence Engine · Resilience Layer   │
│  Arch Registry (x86/ARM/MIPS/RISC-V/PPC)            │
│  Result Cache (SHA256) · Analysis Cache (Redis+SQL)  │
│  SAST (Python AST + C/C++ Regex) · Plugin System     │
├──────────────────────────────────────────────────────┤
│                 Analysis Engines                     │
│  Radare2 6.0.4     │  YARA 4.3.1 · LIEF · Capstone  │
│  r2ghidra           │  CAPA · angr · Qiling          │
│  Volatility3 · Scapy│ DIE · Binwalk · Sleuth Kit    │
│  pwntools · ROPgadget│ Keystone (assembler)          │
└──────────────────────────────────────────────────────┘

该服务支持 Python 3.10–3.12。可选的 angr 符号执行引擎会安装在 Python 3.12 及更高版本中,因为这些版本有安全且兼容的发行版;Python 3.10 和 3.11 的安装不会包含 angr。

核心基础设施(37 个模块)

reversecore_mcp/core/ 目录包含所有工具所依赖的共享基础设施:

模块用途
config.py使用 34 个以上环境变量的 Pydantic BaseSettings
security.py输入清理、命令参数验证
validators.py文件和二进制路径验证(含 TOCTOU 缓解措施)、符号链接解析
r2_pool.py可配置大小的线程安全 Radare2 连接池
r2_helpers.py结构化 Radare2 输出解析
metrics.py每个工具的执行时间、调用次数、错误率、缓存统计信息
memory.py基于异步 SQLite 的 AI 记忆存储,用于跨会话保存分析结果
mitre_mapper.pyMITRE ATT&CK 技术 ID 映射引擎
evidence.py证据分类系统:OBSERVED、INFERRED、POSSIBLE
resilience.py重试、断路器和超时装饰器模式
task_queue.py通过 Redis + arq 实现的后台任务队列
extension_registry.py插件注册和生命周期管理
arch_registry.py多架构映射(x86、x86_64、ARM32、ARM64、MIPS、RISC-V、PPC → r2 架构/位数/寄存器)
result_cache.py基于 SHA256 的工具结果缓存装饰器(@cache_tool_result)
analysis_cache.py多层反编译缓存(L1:Redis,L2:SQLite)
result.pyToolSuccess / ToolError Pydantic 模型
exceptions.py17 个带有 RCMCP-E* 错误代码的异常类
decorators.py@log_execution、@track_metrics
error_handling.py@handle_tool_errors 装饰器
error_formatting.py结构化错误响应格式化
execution.py安全的子进程执行,支持超时和输出限制
command_spec.py子进程调用的命令规范
loader.py动态工具模块加载器
plugin.py插件基类
extension.py扩展基类
container.py容器/沙盒执行支持
audit.py审计日志记录
binary_cache.py二进制文件缓存
json_utils.py通过 orjson 进行 JSON 序列化(比标准库 json 快 3–5 倍)
logging_config.py基于 Loguru 的结构化日志记录
report_generator.py报告渲染引擎(Markdown、通过 xhtml2pdf 生成 PDF)
resource_manager.pyMCP 资源生命周期管理
sast/python_ast_scanner.py基于 Python AST 的漏洞扫描器
sast/regex_scanner.py基于 C/C++ 正则表达式的漏洞扫描器
sast/rule_manager.pySAST 规则加载与管理

工具目录(177 个工具)

📖 权威工具目录与参数参考(151 个工具) 📊 工具配置文件占用与上下文基准矩阵

每个工具都会返回结构化的 ToolResult——包含类型化 data 的 ToolSuccess,或带有 RCMCP-E* 错误代码的 ToolError。工具划分为 11 个领域插件,分布在 5 种模块化执行配置中(full、static、malware、forensics、vuln-research):

配置已注册工具数架构大小相较于 Full 的 LLM 上下文节省量推荐领域
full153116.8 KB基线(0%)完整的企业级逆向工程套件
vuln-research10573.3 KB-37.2%(约 10,800 个 token)模糊测试、ASan 崩溃分类、CVE 挖掘、漏洞利用研究
static9967.7 KB-42.0%(约 12,200 个 token)反汇编、反编译(r2ghidra)、LIEF、静态分类
malware6762.8 KB-46.2%(约 13,500 个 token)威胁分类、YARA 扫描、反混淆、反分析
forensics5737.0 KB-68.4%(约 19,500 个 token)内存取证(Volatility3)、网络 PCAP(Scapy)、磁盘

🔍 静态分析插件(24 个工具)
#工具后端描述
1run_stringsstrings CLI提取 ASCII/Unicode 字符串,可配置最小长度
2run_binwalkBinwalk深度扫描固件中的嵌入式特征签名和文件系统
3run_binwalk_extractBinwalk提取 binwalk 发现的嵌入文件
4parse_binary_with_liefLIEF全面解析 PE/ELF/Mach-O 头部、节、导入/导出表和 TLS
5detect_packerDIE快速检测加壳器/编译器
6detect_packer_deepDIE(diec)通过 Detect It Easy 深度分析加壳器/保护器
7run_capaCAPA(Mandiant FLARE)能力检测——“加密数据”“创建持久化”等
8run_capa_quickCAPA使用规则子集快速扫描能力
9generate_signatureRadare2生成用于识别的二进制特征签名
10generate_yara_ruleRadare2 + YARA根据二进制特征生成 YARA 检测规则
11generate_advanced_yara_ruleRadare2 + YARA使用行为指标生成高级 YARA 规则
12scan_for_versionsLIEF + strings扫描二进制文件中的嵌入式版本字符串
13extract_rtti_infoRadare2提取 C++ RTTI(运行时类型信息)
14diff_binariesRadare2对比两个文件版本之间的二进制语义差异
15analyze_variant_changesRadare2分析二进制变体之间的变化
16match_librariesRadare2根据函数指纹识别静态链接的库
17patch_diff_1dayRadare2 + 启发式方法自动分析补丁差异,用于 1-day 漏洞研究
18analyze_patch_diff_autoRadare2 + 推理自动推断补丁中的漏洞
19emulate_binaryRadare2 ESIL跟踪寄存器/内存的代码仿真
20generate_fuzzing_harnessQiling + AFL++生成针对特定函数的模糊测试框架
21run_fuzzing_campaignAFL++运行完整的模糊测试活动并收集崩溃
22triage_crashGDB解析崩溃并评估可利用性
23verify_path_and_get_argsangr符号执行——证明路径可达并计算具体输入
24taint_traceRadare2 + angr从数据源到数据汇的污点数据流分析

🔐 源代码审计插件(1 个工具)
#工具后端描述
25audit_source_codeAST + Regex使用 Python AST 扫描及 C/C++ 正则表达式扫描危险模式
🛠️ 常用实用工具插件(20 个工具)

文件操作(5 个工具)

#工具描述
26run_file文件类型、架构和编译器指纹识别
27copy_to_workspace将文件复制到分析工作区
28create_directory在工作区中创建目录
29list_workspace列出工作区中的所有文件
30scan_workspace全面扫描工作区并获取文件元数据

补丁说明(1 个工具)

#工具描述
31explain_patch用自然语言解释二进制补丁

汇编器(1 个工具)

#工具后端描述
32assemble_instructionsKeystone将指令汇编为机器码(x86、ARM、MIPS 等)

AI 记忆管理(11 个工具)

这些工具可让 AI 使用异步 SQLite 数据库,在不同分析会话间持久化和回忆分析结果:

#工具描述
33create_memory_session为分析启动新的记忆会话
34store_analysis_finding保存带标签的分析结果
35query_analysis_memories根据查询搜索过往分析结果
36get_binary_analysis_context获取特定二进制文件的所有上下文信息
37tag_analysis_session为会话添加标签,便于整理
38search_memories_by_tag按标签查找会话或分析结果
39delete_analysis_session删除会话及其分析结果
40cleanup_expired_sessions删除超过指定期限的会话
41list_analysis_sessions列出所有活跃会话
42export_memory_store将所有记忆导出为可移植格式
43import_memory_store从导出文件导入记忆

服务监控(2 个工具)

#工具描述
44get_server_health运行时间、内存用量、已加载工具、Python 版本
45get_tool_metrics每个工具的调用次数、平均执行时间、错误率、缓存命中或未命中次数

⚙️ Radare2 和 r2ghidra 插件(30 个工具)

所有 Radare2 工具都使用线程安全的连接池(r2_pool.py),自动管理 r2pipe 会话。

#工具描述
46Radare2_open_file在 Radare2 中打开二进制文件
47Radare2_close_file关闭 Radare2 会话
48Radare2_list_open_files列出当前已打开的文件
49Radare2_analyze_binary运行完整的自动分析(aaa)
50Radare2_list_functions列出所有检测到的函数
51Radare2_disassemble_function反汇编指定函数
52Radare2_disassemble_address反汇编指定地址处的代码
53Radare2_decompile_function通过 r2ghidra 反编译(嵌入在 r2 中的 Ghidra 引擎,无需 JVM)
54Radare2_list_exports列出导出的符号
55Radare2_list_imports列出导入的函数
56Radare2_list_sections列出二进制文件各节及其熵值
57Radare2_list_strings列出在二进制文件中找到的字符串
58Radare2_find_cross_references跟踪函数调用和数据引用
59Radare2_search_bytes在二进制文件中搜索字节模式
60Radare2_get_binary_info获取二进制文件元数据(架构、格式、字节序)
61Radare2_execute_command执行原始 Radare2 命令
62Radare2_esil_emulate在指定地址进行 ESIL 仿真
63Radare2_get_hexdump获取虚拟地址处的十六进制转储
64Radare2_get_cfg_data提取控制流图数据
65Radare2_generate_cfg_png将 CFG 生成为 PNG 图像
66Radare2_generate_callgraph生成函数调用图
67Radare2_recover_structures自动恢复 C 结构体并保存到注释数据库
68Radare2_decompile_with_r2ghidra使用缓存进行高质量 C 反编译
69Radare2_annotate_binary为二进制文件添加注释
70Radare2_get_annotations获取注释
71Radare2_export_annotations将注释导出到文件
72Radare2_import_annotations从文件导入注释
73Radare2_detect_crypto_constants检测加密常量(AES S 盒等)
74Radare2_find_gadgets查找 ROP/JOP gadget
75Radare2_calculate_entropy计算各节的熵值

🦠 恶意软件分析插件(9 个工具)
#工具后端描述
76dormant_detectorRadare2 + 启发式分析查找隐藏后门、孤立函数、定时炸弹和逻辑炸弹
77adaptive_vaccineYARA + Radare2生成检测用 YARA 规则和用于消除威胁的二进制补丁
78vulnerability_hunterRadare2 + 分析检测危险的 API 模式(strcpy、sprintf)和 ROP gadget 链
79extract_iocs正则表达式 + LIEF提取 IP、URL、域名、哈希、注册表项和加密地址
80run_yaraYARA使用自定义规则文件和内置规则集进行扫描
81generate_poc_exploitpwntools生成概念验证漏洞利用代码
82build_rop_chainROPgadget + pwntools自动构造 ROP 链
83autonomous_vuln_huntRadare2 + angr自主漏洞搜寻流水线
84analyze_heap_exploitRadare2 + 启发式分析堆利用分析(UAF、double-free、溢出)

🕵️ 数字取证插件(22 个工具)

内存取证(6 个工具)

#工具后端描述
85memory_analyzeVolatility3全面分析内存转储
86memory_list_processesVolatility3列出内存转储中的运行进程
87memory_detect_injectionsVolatility3检测进程内存中的代码注入
88memory_extract_stringsVolatility3从进程内存中提取字符串
89memory_dump_moduleVolatility3从内存中转储已加载的模块
90memory_list_symbolsVolatility3列出内存中的符号

磁盘取证(6 个工具)

#工具后端描述
91disk_list_partitionSleuth Kit列出磁盘分区
92disk_list_filesSleuth Kit列出磁盘映像中的文件
93disk_recover_deletedSleuth Kit恢复已删除的文件
94disk_analyze_mftSleuth Kit分析 NTFS 主文件表
95disk_extract_fileSleuth Kit从磁盘映像中提取文件
96disk_hash_verifySleuth Kit通过哈希值验证文件完整性

网络取证(5 个工具)

#工具后端描述
97pcap_analyzeScapyPCAP 分析:协议分类、异常检测
98pcap_list_connectionsScapy列出所有网络连接
99pcap_extract_dnsScapy提取 DNS 查询和响应
100pcap_extract_c2Scapy识别潜在的 C2 通信
101pcap_reconstruct_streamScapy重建 TCP 流

工件分析(5 个工具)

#工具后端描述
102artifact_collectCustom parsers收集浏览器历史记录、注册表配置单元、事件日志和预取文件
103artifact_correlate_iocCustom parsers将工件与已知 IOC 关联
104artifact_generate_yaraYARA根据工件模式生成 YARA 规则
105artifact_timelineCustom parsers根据多个工件来源构建时间线
106artifact_reportCustom parsers生成工件分析报告

📝 报告生成插件(14 个工具)
#工具描述
107get_system_time获取服务器时间戳(防止 AI 幻觉生成日期)
108set_timezone设置报告时区
109get_timezone_info获取当前时区信息
110start_report_session启动具有唯一 ID 的定时分析会话
111end_report_session完成会话:计算时长并锁定 IOC/ATT&CK 列表
112get_report_session_status检查会话状态
113list_report_sessions列出所有活动或已完成的会话
114add_ioc在实时会话期间收集并标记 IOC
115add_analysis_note添加分类备注(发现、警告、行为)
116add_mitre_technique记录 MITRE ATT&CK 技术 ID
117set_severity设置会话严重级别(低/中/高/严重)
118create_analysis_report以 4 种模式呈现报告:full_analysis、quick_triage、ioc_summary、executive_brief
119generate_vex_report生成 VEX(漏洞可利用性交换)报告
120generate_sigma_rule生成 SIGMA 检测规则

引导式分析提示词(22 种模式)

提示词是预先构建的分析工作流,可为 AI 提供结构化角色、分步工具使用流程和证据分类规则。在 AI 客户端中引用提示词名称即可启用。

恶意软件分析(9 个提示词)
提示词用例
full_analysis_mode6 阶段全面分析:分诊 → 反汇编 → 行为 → 网络 → 持久化 → 报告
malware_analysis_mode专注于恶意软件分析,并进行威胁分类
basic_analysis_mode快速分诊,用于初步评估和快速判定
apt_hunting_modeAPT 专项狩猎:横向移动、持久化、数据外泄
malware_defense_mode防御导向:生成检测规则和缓解措施
unpacking_mode分析并绕过加壳/混淆(Themida、VMProtect、UPX)
c2_extraction_mode提取并分析 C2 通信基础设施
ransomware_triage_mode勒索软件专项分诊:加密分析、密钥恢复评估
code_similarity_mode比较二进制文件的代码相似性和共同谱系
安全研究(6 个提示词)
提示词用例
vulnerability_research_mode漏洞搜寻:缓冲区溢出、UAF、命令注入
crypto_analysis_mode分析密码实现并检测弱点
firmware_analysis_modeIoT/嵌入式固件:binwalk 提取、UART 字符串、硬编码凭据
patch_analysis_mode安全补丁分析和回归测试
source_code_audit_mode源代码安全审计(Python、C、C++)
autonomous_vuln_hunt_mode自主漏洞搜寻流水线
CVE 研究与漏洞利用开发(5 个提示词)
提示词用例
taint_analysis_mode数据流污点分析:自动发现源→汇路径
heap_exploit_mode堆利用分析和 PoC 生成
fuzzing_mode模糊测试活动设置和崩溃分诊
patch_diff_auto_mode自动分析补丁差异,用于 1-day 漏洞研究
cve_discovery_pipeline_mode完整的 CVE 发现流水线:从补丁差异到可用的漏洞利用程序
其他(2 个提示词)
提示词用例
game_analysis_mode游戏客户端分析:反作弊检测、协议逆向工程、内存检查
report_generation_mode结构化会话工作流,并映射 MITRE ATT&CK 技术

**提示词的工作方式:**每个提示词都会为 AI 设定一个结构化的分析角色。其中包含思维链推理检查点(AI 必须暂停并评估后才能继续),以及证据分类规则,防止 AI 将猜测陈述为事实。每项发现都必须标记为 OBSERVED(已直接验证)、INFERRED(通过静态分析逻辑推导得出)或 POSSIBLE(需要进一步验证)。


MCP 资源(11 个 URI)

资源是只读数据端点,AI 客户端可通过 URI 模板访问。资源通过提供结构化数据来补充工具,无需显式调用工具。

静态资源
URI描述
reversecore://guide工具使用指南,包含文件路径规则和最佳实践
reversecore://guide/structures结构恢复和交叉引用分析技术指南
reversecore://tools全部 177 个已注册工具的完整文档
reversecore://logs应用程序日志(最后 100 行)
动态资源(每个二进制文件的虚拟文件系统)

这些 URI 会针对每个二进制文件进行解析,并按需调用相应的分析工具:

URI 模板描述
reversecore://{filename}/strings提取二进制文件中的所有字符串
reversecore://{filename}/iocs提取 IOC(IP、URL、电子邮件、哈希值)
reversecore://{filename}/func/{address}/code函数的反编译伪 C 代码
reversecore://{filename}/func/{address}/asm函数的反汇编
reversecore://{filename}/func/{address}/cfgMermaid 格式的控制流图
reversecore://{filename}/functions列出二进制文件中的所有函数
reversecore://{filename}/dormant_detector休眠检测器分析结果

快速开始

选项 1 — PyPI(最简单)
pip install reversecore-mcp
reversecore-mcp

先决条件: 系统上必须已安装 Radare2(r2 --version)。YARA 会通过 yara-python 自动安装。

选项 2 — Docker(推荐,可获得完整功能)

所有分析引擎(Radare2、r2ghidra、YARA、Binwalk、Sleuth Kit、GDB 等)均已预装:

docker run -i --rm \
  -v /path/to/your/samples:/app/workspace \
  -e REVERSECORE_WORKSPACE=/app/workspace \
  -e MCP_TRANSPORT=stdio \
  ghcr.io/sjkim1127/reversecore_mcp:latest
选项 3 — 从源代码构建(Docker Compose)
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
./scripts/run-docker.sh        # auto-detects Intel / Apple Silicon

或者手动操作:

docker compose --profile x86 up -d    # Intel/AMD
docker compose --profile arm64 up -d  # Apple Silicon (M1/M2/M3)
选项 4 — Python(本地开发)
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python -m reversecore_mcp.server

本地模式的先决条件: 系统上必须已安装 Radare2(r2 --version)。各个工具后端(YARA、LIEF、Capstone 等)通过 pip 安装。要获得完整的取证支持,还需要 Volatility3、Scapy 和 Sleuth Kit。


连接到 AI 客户端

将服务配置添加到 IDE 客户端设置中(例如,~/.cursor/mcp.json 或 claude_desktop_config.json)。

⚡ 选项 1:Docker Exec 模式(推荐)

如果你通过 Docker Compose 运行了容器,此模式会将 stdio 直接传入正在运行的容器。启动延迟为零、内存持久保留,且可使用所有工具。

{
  "mcpServers": {
    "Reversecore_MCP": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "-e",
        "MCP_TRANSPORT=stdio",
        "reversecore-mcp-arm64",
        "python",
        "-m",
        "reversecore_mcp.server"
      ]
    }
  }
}

如果你使用的是 Intel/AMD,请将 reversecore-mcp-arm64 替换为 reversecore-mcp。


🌐 选项 2:SSE HTTP 模式

用于基于网络的流式传输(服务器发送事件):

{
  "mcpServers": {
    "Reversecore_MCP": {
      "url": "http://localhost:8000/mcp/sse"
    }
  }
}

📦 选项 3:Stdio 模式(按需启动 Docker)

每个会话都会启动一个全新且隔离的容器:

🍎 macOS
{
  "mcpServers": {
    "reversecore": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/YOUR_USERNAME/samples:/app/workspace",
        "-e", "REVERSECORE_WORKSPACE=/app/workspace",
        "-e", "MCP_TRANSPORT=stdio",
        "ghcr.io/sjkim1127/reversecore_mcp:latest"
      ]
    }
  }
}
🐧 Linux
{
  "mcpServers": {
    "reversecore": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/home/YOUR_USERNAME/samples:/app/workspace",
        "-e", "REVERSECORE_WORKSPACE=/app/workspace",
        "-e", "MCP_TRANSPORT=stdio",
        "ghcr.io/sjkim1127/reversecore_mcp:latest"
      ]
    }
  }
}
🪟 Windows
{
  "mcpServers": {
    "reversecore": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "C:/samples:/app/workspace",
        "-e", "REVERSECORE_WORKSPACE=/app/workspace",
        "-e", "MCP_TRANSPORT=stdio",
        "ghcr.io/sjkim1127/reversecore_mcp:latest"
      ]
    }
  }
}

⚠️ 重要 — Docker 内的文件路径

你的本地文件夹会挂载到容器内的 /app/workspace。 请始终仅使用文件名引用文件,不要使用本地完整路径。

❌ 错误✅ 正确
r2_decompile("/Users/john/samples/mal.exe")r2_decompile("mal.exe")

配置

所有设置都可以通过环境变量或 .env 文件提供(参见 .env.example)。设置通过带有 REVERSECORE_ 前缀的 Pydantic BaseSettings 管理。

核心设置
变量默认值描述
MCP_TRANSPORTstdio传输模式:stdio 或 http
REVERSECORE_WORKSPACE./ (cwd)分析工作区目录
REVERSECORE_READ_DIRS""以逗号分隔的其他只读目录列表
REVERSECORE_STRICT_PATHSfalse路径不存在时引发错误,而非发出警告
REVERSECORE_STRUCTURED_ERRORSfalse启用带错误代码的结构化错误响应
REVERSECORE_DEFAULT_TOOL_TIMEOUT120工具执行的默认超时时间,单位为秒
REVERSECORE_MAX_OUTPUT_SIZE10000000工具的最大输出大小(字节)
REVERSECORE_FORENSICS_MAX_RECOVERED_BYTES500000000从单个磁盘 inode 恢复的最大字节数
HTTP 模式设置
变量默认值说明
MCP_HOST0.0.0.0要绑定的主机接口(如果没有 API 密钥,则自动覆盖为 127.0.0.1)
MCP_PORT8000HTTP 服务端口
MCP_API_KEY(unset)HTTP 身份验证用的 API 密钥(X-API-Key 或 Authorization: Bearer)
REVERSECORE_RATE_LIMIT60每分钟最大请求数(仅限 HTTP 模式,通过 slowapi 实现)
MAX_UPLOAD_SIZE100000000最大上传大小(默认 100 MB)
FILE_RETENTION_MINUTES1440上传文件的保留时间(默认 24 小时)
Radare2 设置
变量默认值说明
REVERSECORE_R2_POOL_SIZE3连接池中的 Radare2 连接数
REVERSECORE_R2_POOL_TIMEOUT30从连接池获取连接的超时时间
REVERSECORE_R2_EXTENSIONS""以逗号分隔的 r2 扩展类列表(module:ClassName)
REVERSECORE_GHIDRA_MAX_PROJECTS3缓存的 r2ghidra 反编译项目的最大数量
REVERSECORE_GHIDRA_EXTENSIONS""以逗号分隔的 Ghidra 扩展类列表
MAX_EMULATION_INSTRUCTIONS1000ESIL 仿真指令的最大数量
沙箱设置
变量默认值说明
REVERSECORE_SANDBOX_ENABLEDfalse为动态分析工具启用沙箱执行
REVERSECORE_SANDBOX_MODEauto沙箱模式:auto、host、container、disabled
REVERSECORE_SANDBOX_DOCKER_IMAGEreversecore-sandbox:latest用于沙箱执行的 Docker 镜像
REVERSECORE_SANDBOX_CPU_LIMIT1.0沙箱容器的 CPU 核心限制
REVERSECORE_SANDBOX_MEMORY_LIMIT512m沙箱容器的内存限制
REVERSECORE_SANDBOX_PIDS_LIMIT100沙箱容器的 PID 限制
REVERSECORE_SANDBOX_USERnobody用于沙箱执行的非 root 用户
存储与队列
变量默认值说明
REDIS_URLredis://localhost:6379/0用于任务队列和结果缓存的 Redis URL
MEMORY_DB_PATH~/.reversecore_mcp/memory.dbAI 记忆 SQLite 数据库的路径
REVERSECORE_LIEF_MAX_FILE_SIZE1000000000LIEF 解析的最大文件大小(1 GB)
日志记录
变量默认值说明
LOG_LEVELINFO日志详细程度:DEBUG、INFO、WARNING、ERROR
LOG_FILE<tempdir>/reversecore/app.log日志文件路径
LOG_FORMAThuman日志格式:human(易读)或 json(结构化)
插件与 SAST
变量默认值说明
REVERSECORE_PLUGIN_DIRS""以逗号分隔的目录列表,用于扫描扩展插件
REVERSECORE_SAST_RULES_PATH""自定义 YAML SAST 规则文件的路径

安全模型

安全性通过纵深防御实现,在多个层面提供保护:

输入与路径安全
控制措施实现方式
无 shell 注入所有子进程调用均使用列表参数,绝不使用 shell 字符串(execution.py)
路径遍历防护validate_file_path() 和 validate_binary_path() 会解析符号链接,并将访问限制在工作区内(validators.py)
TOCTOU 缓解bypass_cache=True 标志会重新验证路径,以防止竞态条件
输入清理执行前会清理所有参数(security.py)
CSRF 防护仪表板表单需要基于令牌的 CSRF 验证(dashboard/__init__.py)
网络与身份验证
控制措施实现方式
防计时攻击身份验证使用 secrets.compare_digest() 比较 API 密钥(web/auth.py)
受限的身份验证方式仅接受 X-API-Key 和 Authorization: Bearer 标头;不接受查询参数或 Cookie
仅限环回地址的回退机制未设置 MCP_API_KEY 时,HTTP 访问仅限 127.0.0.1(web/middleware.py)
速率限制通过 slowapi 配置每分钟限额
安全标头对所有 HTTP 响应设置 HSTS、X-Content-Type-Options、X-Frame-Options 和 CSP(web/middleware.py)
精简的 /health公共端点仅返回 {"status": "alive"};详细信息需通过身份验证后才能访问(web/endpoints.py)
容器与运行时
控制措施实现方式
以非 root 用户运行以 appuser(UID 1000)身份运行,并使用最低限度的功能权限
资源限制Docker Compose 限制 CPU(2.0)和内存(4 GB)
沙箱隔离为动态分析工具提供可选的基于容器的沙箱
CI/CD 安全关卡
控制措施实现方式
密钥扫描每次提交时运行 Gitleaks(pre-commit 钩子 + CI)
SAST每次提交时使用 Bandit 扫描所有 Python 代码
CodeQL每次推送到 main 时运行 GitHub CodeQL 静态分析
依赖项审计每次推送时运行 pip-audit,不存在未经审查的 CVE
容器扫描使用 Trivy 扫描 Docker 镜像中的漏洞(从 LOW 到 CRITICAL)
漏洞利用安全关卡使用 Bandit 扫描 POC 模板;通过 Hypothesis 进行 DAST 模糊测试;验证容器隔离
结构化错误处理

全部 17 个异常类均带有 RCMCP-E* 错误代码,以便通过程序处理。完整层级请参阅错误处理。


开发

设置
git clone https://github.com/sjkim1127/Reversecore_MCP.git
cd Reversecore_MCP
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
pre-commit install   # installs Ruff, Bandit, Gitleaks hooks
测试
# Full test suite with coverage report
pytest tests/ -v

# Unit tests only (fast, no external dependencies)
pytest tests/unit/ -v

# Integration tests (requires Docker)
pytest tests/integration/ -v

# Run with coverage threshold enforcement
pytest tests/unit/ --cov=reversecore_mcp --cov-fail-under=80

# Run a specific test
pytest tests/unit/test_cli_tools.py::TestRunFile::test_success -v

# Security boundary tests
pytest tests/ -m security -v

# Benchmarks
pytest tests/ -m benchmark -v

测试状态:

  • ✅ 1,957 个单元测试已通过,覆盖 Python 3.10 / 3.11 / 3.12
  • 📊 87% 代码覆盖率(CI 强制要求最低 80%)
  • 🔒 Bandit 零发现项
  • ⚡ 通过 pytest-asyncio 实现完全异步的测试套件

测试标记:

标记用途
@pytest.mark.unit快速单元测试
@pytest.mark.integration需要 Docker 或外部工具的测试
@pytest.mark.slow耗时较长的测试
@pytest.mark.benchmark性能基准测试
@pytest.mark.security安全边界验证测试
代码质量
ruff check reversecore_mcp/      # Lint (E, W, F, I, B, C4, UP rules)
ruff format reversecore_mcp/     # Format
mypy reversecore_mcp/            # Type check (0 errors across 108 files)
bandit -r reversecore_mcp/       # Security scan (all severities)
pip-audit                        # Dependency CVE scan
Pre-commit 钩子

每次提交时都会自动运行以下钩子:

  1. Ruff — lint 并自动修复,同时检查格式
  2. trailing-whitespace — 删除行尾空格
  3. end-of-file-fixer — 确保文件以换行符结尾
  4. check-yaml / check-json — 验证 YAML/JSON 语法
  5. check-added-large-files — 阻止大小超过 1 MB 的文件
  6. check-merge-conflict — 检测未解决的合并标记
  7. detect-private-key — 防止意外提交密钥
  8. Bandit — Python 安全扫描

CI/CD 流水线

每次推送到 main 都会触发 11 个流水线任务。部署前所有任务都必须通过。

 Lint & Security Gate              Unit Tests (Python Matrix)
   ├─ Gitleaks (secret scan)         ├─ pytest 3.10 --cov-fail-under=80
   ├─ Hadolint (Dockerfile lint)     ├─ pytest 3.11 --cov-fail-under=80
   ├─ Ruff check + format            └─ pytest 3.12 --cov-fail-under=80
   ├─ Mypy type check (108 files)
   ├─ Bandit (all severities)      Wheel Smoke Test
   ├─ pip-audit (no CVEs)            └─ Build wheel → install in /tmp
   └─ Security boundary tests            → verify plugin discovery
                                          → assert __file__ under sys.prefix
 CodeQL Analysis
   └─ Python SAST                  Docker Verification
                                     ├─ Build reversecore-mcp:ci
 Exploit Safety Gate                 ├─ Trivy container scan
   ├─ Bandit on POC templates        ├─ Image size check (< 5 GB)
   ├─ Hypothesis DAST fuzzing        ├─ CLI tool verification
   ├─ Performance benchmarks         ├─ Integration tests in container
   └─ Container isolation test       └─ E2E tool invocation

 In-Container Smoke Test           Build Base Image (amd64 + arm64)
   ├─ Copy test ELF into container   ├─ Compile YARA 4.3.1
   └─ Run scripts/smoke_test.py     ├─ Compile Radare2 6.0.4
                                     ├─ Compile r2ghidra
 Deploy (amd64 + arm64)             └─ Push to GHCR
   ├─ Build app image
   ├─ Push to GHCR                 Merge Manifests
   └─ Trivy rescan on published     └─ Multi-arch manifest → :latest

**零绕过策略:**绝不会通过修改流水线配置来解决 CI/CD 失败。始终直接在源代码或依赖项中修复根本原因。


Docker 构建架构

Docker 构建采用双层方案,以控制构建耗时:

第 1 层:基础镜像(Dockerfile.base)

多阶段构建,从源代码编译所有构建缓慢且很少变更的依赖项:

compiler-toolchain (python:3.12-slim-bookworm + build tools)
    ├── compiler-yara      (YARA 4.3.1 from source)     [parallel]
    ├── compiler-r2        (Radare2 6.0.4 from source)   [parallel]
    │     └── compiler-r2ghidra  (r2ghidra plugin)       [sequential]
    └── compiler-pip       (pip install into /opt/venv)  [parallel]

base (final runtime: python:3.12-slim-bookworm)
    ├── Runtime packages: file, binutils, gdb, binwalk, graphviz, nasm, sleuthkit
    ├── /opt/yara (compiled YARA)
    ├── /opt/radare2 (compiled r2 + r2ghidra)
    ├── /opt/venv (Python packages)
    └── Non-root user: appuser (UID 1000)

仅在工具版本发生变化时才会重建此镜像。构建耗时:约 12 分钟。

第 2 层:应用镜像(Dockerfile)

基于基础镜像,并复制应用代码:

FROM base image
    ├── COPY reversecore_mcp/ (application code)
    ├── COPY scripts/ (smoke test, benchmarks)
    ├── pip install any new requirements
    ├── Security package upgrades
    └── CMD ["python", "-m", "reversecore_mcp.server"]

构建耗时:约 60 秒。

Docker Compose

包含 3 个服务,并使用特定架构的配置文件:

服务配置文件描述
reversecore-mcpdefault, x86Intel/AMD x86_64
reversecore-mcp-arm64arm64, macosApple Silicon ARM64
redis所有配置文件用于任务队列和缓存的 Redis 7 Alpine

资源限制:每个容器使用 2.0 个 CPU 核心、4 GB 内存。


系统要求

组件最低要求推荐配置
CPU4 核8 核及以上
RAM8 GB16 GB
存储空间20 GB50 GB SSD
OSLinux / macOSDocker 环境(任意 OS)
Docker20.10+24.0+
Python(本地模式)3.103.11 或 3.12

项目结构

reversecore_mcp/
├── core/                          # Infrastructure layer (37 modules)
│   ├── config.py                  # Pydantic BaseSettings (34+ env vars)
│   ├── exceptions.py              # Exception hierarchy (17 classes, RCMCP-E* codes)
│   ├── security.py                # Input sanitization & command arg validation
│   ├── validators.py              # Path validators (TOCTOU-hardened, symlink-safe)
│   ├── r2_pool.py                 # Thread-safe Radare2 connection pool
│   ├── r2_helpers.py              # Structured Radare2 output parsing
│   ├── metrics.py                 # Per-tool timing, counts, error rates, cache stats
│   ├── decorators.py              # @log_execution, @track_metrics
│   ├── error_handling.py          # @handle_tool_errors decorator
│   ├── error_formatting.py        # Structured error formatting
│   ├── execution.py               # Safe subprocess with timeout/output limits
│   ├── command_spec.py            # Command specifications
│   ├── memory.py                  # Async SQLite AI memory store
│   ├── mitre_mapper.py            # MITRE ATT&CK mapping engine
│   ├── evidence.py                # Evidence classification (OBSERVED/INFERRED/POSSIBLE)
│   ├── resilience.py              # Retry, circuit-breaker, timeout patterns
│   ├── task_queue.py              # Background task queue (Redis + arq)
│   ├── extension_registry.py      # Plugin registration system
│   ├── arch_registry.py           # Multi-arch mapping (x86/ARM/MIPS/RISC-V/PPC)
│   ├── result_cache.py            # SHA256-based tool result caching
│   ├── analysis_cache.py          # Multi-level decompilation cache (Redis + SQLite)
│   ├── result.py                  # ToolSuccess / ToolError Pydantic models
│   ├── loader.py                  # Dynamic tool module loader
│   ├── plugin.py                  # Plugin base class
│   ├── extension.py               # Extension base class
│   ├── container.py               # Container/sandbox execution
│   ├── audit.py                   # Audit logging
│   ├── binary_cache.py            # Binary file caching
│   ├── json_utils.py              # orjson-backed JSON (3-5x faster)
│   ├── logging_config.py          # Loguru logging configuration
│   ├── report_generator.py        # Report rendering (Markdown, PDF)
│   ├── resource_manager.py        # MCP resource lifecycle
│   └── sast/                      # Source code scanners
│       ├── python_ast_scanner.py  # Python AST vulnerability scanner
│       ├── regex_scanner.py       # C/C++ regex vulnerability scanner
│       ├── rule_manager.py        # SAST rule loader
│       └── default_rules.yaml     # Default scanning rules
│
├── tools/                         # MCP tool implementations (177 tools)
│   ├── analysis/                  # Static analysis (24 tools)
│   │   ├── static_analysis.py     # file, strings, binwalk
│   │   ├── lief_tools.py          # LIEF binary parser
│   │   ├── capa_tools.py          # CAPA capability detection
│   │   ├── die_tools.py           # Detect It Easy packer detection
│   │   ├── diff_tools.py          # Binary diffing
│   │   ├── emulation_tools.py     # ESIL emulation
│   │   ├── fuzz_tools.py          # Fuzzing harness generator
│   │   ├── fuzzing_campaign.py    # Full fuzzing campaign runner
│   │   ├── symbolic_analysis.py   # angr symbolic execution
│   │   ├── signature_tools.py     # Library signature matching
│   │   ├── source_auditor.py      # SAST (Python + C/C++)
│   │   ├── crash_triage.py        # GDB crash triage
│   │   ├── taint_analysis.py      # Source→sink taint tracing
│   │   ├── advanced_yara.py       # Advanced YARA generation
│   │   ├── patch_vuln_inference.py # Patch vulnerability inference
│   │   └── cache_tools.py         # Analysis cache management
│   │
│   ├── radare2/                   # Disassembly & decompilation (30 tools)
│   │   ├── radare2_mcp_tools.py   # Core Radare2 tool set
│   │   ├── r2ghidra_tools.py      # r2ghidra decompiler (cached)
│   │   ├── r2_analysis.py         # Deep function analysis
│   │   ├── r2_db.py               # SQLite annotation + cache DB
│   │   ├── r2_esil_simulator.py   # Multi-arch ESIL simulator
│   │   └── r2_session.py          # Stateful analysis sessions
│   │
│   ├── malware/                   # Threat detection (9 tools)
│   │   ├── dormant_detector.py    # Backdoor/logic bomb detection
│   │   ├── ioc_tools.py           # IOC extraction
│   │   ├── yara_tools.py          # YARA scanning
│   │   ├── adaptive_vaccine.py    # YARA rule + patch generation
│   │   ├── vulnerability_hunter.py # Dangerous API detection
│   │   ├── autonomous_hunter.py   # Autonomous vuln hunting pipeline
│   │   ├── heap_exploit.py        # Heap exploitation analysis
│   │   ├── poc_generator.py       # PoC exploit generation
│   │   └── rop_builder.py         # ROP chain construction
│   │
│   ├── forensics/                 # Digital forensics (22 tools)
│   │   ├── memory.py              # Volatility3 memory forensics
│   │   ├── network.py             # Scapy PCAP analysis
│   │   ├── disk.py                # Sleuth Kit disk forensics
│   │   └── artifact.py            # Browser/registry/event log analysis
│   │
│   ├── report/                    # Report generation (14 tools)
│   │   ├── report_mcp_tools.py    # MCP-registered report tools
│   │   ├── report_tools.py        # Report rendering logic
│   │   ├── session.py             # Session state management
│   │   ├── converter.py           # Format conversion (Markdown → PDF/HTML)
│   │   ├── email.py               # SMTP report delivery
│   │   ├── sigma_generator.py     # SIGMA rule generation
│   │   └── vex_generator.py       # VEX report generation
│   │
│   └── common/                    # Shared utilities (20 tools)
│       ├── file_operations.py     # File ops, workspace management
│       ├── server_tools.py        # Server health, tool metrics
│       ├── memory_tools.py        # AI memory management (11 tools)
│       ├── patch_explainer.py     # Binary patch explanation
│       └── assembler.py           # Keystone assembler
│
├── prompts/                       # AI reasoning prompts (22 modes)
│   ├── malware.py                 # 9 malware analysis prompts
│   ├── security.py                # 6 security research prompts
│   ├── cve_research.py            # 5 CVE/exploit research prompts
│   ├── game.py                    # Game client analysis prompt
│   ├── report.py                  # Report generation prompt
│   ├── server_health.py           # Server inspection prompts
│   └── common.py                  # Shared constants (DOCKER_PATH_RULE, LANGUAGE_RULE)
│
├── dashboard/                     # Web dashboard (FastAPI + HTMX)
│   ├── templates/                 # Jinja2 templates with HTMX fragments
│   └── static/                    # htmx.min.js (local, CSP-compliant)
│
├── web/                           # HTTP transport layer
│   ├── auth.py                    # API key authentication middleware
│   ├── middleware.py              # Security headers, loopback restriction
│   └── endpoints.py               # /health, file upload, dashboard routes
│
├── resources.py                   # 11 MCP resources (static + dynamic per-binary)
└── server.py                      # FastMCP server entry point

其他目录:

tests/
├── unit/                          # 1,957 unit tests
├── integration/                   # Docker-based integration tests
├── fixtures/                      # Test binaries, YARA rules, sample data
└── conftest.py                    # Shared pytest fixtures

scripts/
├── smoke_test.py                  # Multi-layer in-container smoke test
├── check_release_metadata.py      # Version consistency validation
├── fetch_test_binaries.py         # Download test fixtures
├── run-docker.sh                  # Auto-detect architecture and start
└── ...                            # Benchmarks, analysis scripts

docs/
├── getting-started/               # Installation guide
├── development/                   # Architecture, contributing, testing guides
├── api/                           # Tool and module reference
└── user-guide/                    # Analysis workflows

错误处理

所有自定义异常都继承自 ReversecoreError,并携带结构化错误代码:

异常代码类型触发条件
ReversecoreErrorRCMCP-E000UNKNOWN_ERROR所有错误的基类
ValidationErrorRCMCP-E001VALIDATION_ERROR输入无效、参数错误
ExecutionTimeoutErrorRCMCP-E002TIMEOUT_ERROR工具执行超时
ToolNotFoundErrorRCMCP-E003TOOL_ERROR未安装所需的 CLI 工具
OutputLimitExceededErrorRCMCP-E004OUTPUT_ERROR输出超出最大大小
ToolExecutionErrorRCMCP-E005EXECUTION_ERROR子进程返回非零状态码
BinaryAnalysisErrorRCMCP-E100BINARY_ANALYSIS_ERROR二进制分析常规失败
DecompilationErrorRCMCP-E101DECOMPILATION_ERRORr2ghidra 反编译失败
DisassemblyErrorRCMCP-E102DISASSEMBLY_ERRORRadare2 反汇编失败
StructureRecoveryErrorRCMCP-E103STRUCTURE_RECOVERY_ERRORC 结构体恢复失败
SignatureGenerationErrorRCMCP-E104SIGNATURE_GENERATION_ERRORYARA/签名生成失败
EmulationErrorRCMCP-E105EMULATION_ERRORESIL 仿真失败
ToolTimeoutErrorRCMCP-E200TOOL_TIMEOUT_ERROR外部工具执行超时
GhidraConnectionErrorRCMCP-E201GHIDRA_CONNECTION_ERRORr2ghidra 连接问题
Radare2ErrorRCMCP-E202RADARE2_ERRORRadare2 命令失败
WorkspaceErrorRCMCP-E300WORKSPACE_ERROR工作区文件访问错误
SecurityViolationErrorRCMCP-E301SECURITY_VIOLATION违反安全策略
PathTraversalErrorRCMCP-E302PATH_TRAVERSAL检测到路径遍历尝试

AI 客户端可以使用 error_code 字段以编程方式处理失败,并决定是重试、尝试其他工具,还是向用户报告错误。


添加新工具

按照以下模式添加新的 MCP 工具:

# reversecore_mcp/tools/analysis/my_tool.py

from reversecore_mcp.core.decorators import log_execution
from reversecore_mcp.core.result import ToolResult, success, failure
from reversecore_mcp.core.security import validate_file_path


@log_execution()
async def my_analysis_tool(
    file_path: str,
    option: str | None = None,
) -> ToolResult:
    """Analyze a binary for X.

    Args:
        file_path: Path to the binary file (relative to workspace).
        option: Optional analysis option.

    Returns:
        ToolResult with status='success' and structured content.
    """
    try:
        safe_path = validate_file_path(file_path)
        result = await perform_analysis(safe_path)
        return success({"result": result})
    except Exception as e:
        return failure(
            error_code="RCMCP-E100",
            message=str(e),
            hint="Check that the file exists and is a valid binary.",
        )

然后在相应插件的 __init__.py 中注册该工具,并在 tests/unit/ 中添加测试。


贡献

  1. Fork 此仓库
  2. 创建功能分支:git checkout -b feat/my-feature
  3. 随代码编写测试——覆盖率不得低于 80%
  4. 确保所有检查均通过:pytest、ruff check、mypy、bandit
  5. 提交清晰描述变更内容的拉取请求

请阅读贡献指南,了解代码规范、文档字符串约定(Google 风格)以及拉取请求检查清单。


文档

文档描述
安装指南适用于所有环境的详细设置说明
架构指南系统设计和组件详情
贡献指南代码规范、文档字符串、PR 工作流
测试指南测试模式、固件和覆盖率
API 参考工具和模块参考
用户指南分析工作流

使用示例

示例 1:基本恶意软件初步分析
User: "Analyze this suspicious file sample.exe"

AI calls:
  1. run_file("sample.exe")           → PE32 executable, x86, MSVC
  2. detect_packer("sample.exe")      → Not packed
  3. extract_iocs("sample.exe")       → 3 IPs, 2 URLs, 1 mutex
  4. run_capa("sample.exe")           → "creates persistence", "encrypts data"
  5. dormant_detector("sample.exe")   → 2 orphan functions with network calls
  6. generate_yara_rule("sample.exe") → Detection rule generated

AI response: "This PE32 binary shows ransomware-like behavior. CAPA detected
encryption and persistence capabilities. I found 2 hidden network functions
that may serve as a backup C2 channel. Here's a YARA rule for detection..."
示例 2:使用污点分析进行漏洞研究
User: "Find exploitable bugs in this network daemon"

AI activates: taint_analysis_mode

AI calls:
  1. taint_trace("daemon", verify_with_angr=True)
     → Found 3 source→sink paths:
       recv() → strcpy()   [CWE-120, CONFIRMED by angr]
       read() → sprintf()  [CWE-134, LIKELY]
       getenv() → system() [CWE-78, POSSIBLE]

  2. vulnerability_hunter("daemon")
     → 12 dangerous API calls, 4 exploitable patterns

  3. generate_poc_exploit(target="daemon", vuln_type="bof", offset=128)
     → Python exploit script generated

AI response: "I found a confirmed stack buffer overflow where recv() data
flows directly into strcpy() at 0x40123C. angr proved the path is reachable.
Here's a working PoC..."
示例 3:数字取证调查
User: "Analyze this memory dump from a compromised server"

AI calls:
  1. memory_list_processes("memdump.raw")
     → 47 processes, 2 with suspicious names

  2. memory_detect_injections("memdump.raw")
     → Code injection detected in PID 1842 (svchost.exe)

  3. memory_extract_strings("memdump.raw", pid=1842)
     → C2 domain strings extracted

  4. artifact_correlate_ioc(artifacts={"domains": ["evil-c2.com"]})
     → Matches known APT group IOCs

  5. create_analysis_report(template_type="full_analysis")
     → PDF report with timeline and MITRE ATT&CK mapping
示例 4:用于 1-day 研究的补丁差异分析
User: "Compare the patched and unpatched versions to find what was fixed"

AI activates: patch_diff_auto_mode

AI calls:
  1. diff_binaries("libfoo-1.0.so", "libfoo-1.1.so")
     → 3 functions changed, 1 new function

  2. patch_diff_1day("libfoo-1.0.so", "libfoo-1.1.so")
     → Automated analysis: bounds check added at parse_header()

  3. r2_decompile("libfoo-1.0.so", "parse_header")
     → Decompiled vulnerable version (no bounds check)

  4. r2_decompile("libfoo-1.1.so", "parse_header")
     → Decompiled patched version (memcpy size limited)

AI response: "The patch adds a bounds check in parse_header() at 0x12340.
The old version copies user-controlled length bytes via memcpy without
validation, creating a heap buffer overflow (CWE-122)."

多架构支持

arch_registry.py 模块将架构名称映射到 Radare2 配置参数,使工具无需手动配置即可适用于不同的 CPU 架构:

架构键r2 架构位宽PC 寄存器SP 寄存器
Intel 32 位x86x8632eipesp
Intel/AMD 64 位x86_64x8664riprsp
ARM 32 位 / Thumbarm32arm16, 32r15r13
ARM 64 位(AArch64)arm64arm64pcsp
MIPSmipsmips32, 64pcsp
RISC-Vriscvriscv32, 64pcsp
PowerPCppcppc32, 64pcr1

别名解析会自动处理:

  • amd64 → x86_64
  • aarch64 → arm64
  • arm 搭配 bits=64 → arm64
  • arm 搭配 bits=16 或 bits=32 → arm32

Radare2_esil_emulate、assemble_instructions 和 r2_simulate_patch 等工具会使用此注册表,为任何目标二进制文件正确配置分析环境。


结果缓存系统

两层缓存可尽量减少重复计算:

工具结果缓存(result_cache.py)

@cache_tool_result 装饰器根据二进制文件的 SHA256 哈希值和工具的关键字参数缓存任意工具的输出:

Cache key = SHA256( "<tool_name>::{sorted_json_kwargs}" )

**存储后端:**通过 r2_db.py 使用 SQLite 数据库,可通过 get_cached_result() 和 set_cached_result() 工具访问。

**指标:**通过 metrics_collector.record_cache_hit() 和 record_cache_miss() 记录缓存命中和未命中情况,可通过 get_tool_metrics 工具查看。

分析缓存(analysis_cache.py)

专为反编译结果(计算开销较大)设计的多级缓存:

级别后端键格式TTL用途
L1Redisghidra:decompile:{file_hash}:{function_address}:{decompiler}1 小时(3600s)快速缓存,可跨会话共享
L2SQLite表 decompilation_cache持久Redis 重启后仍可保留

导入/导出:export_analysis_cache 和 import_analysis_cache 工具可将缓存状态保存到 rcpack 文件或从中导入,以便在不同环境之间共享。


AI 记忆系统

AI 记忆系统(memory_tools.py + core/memory.py)可跨会话持久存储并查询分析发现。这使 AI 能够:

  • 记住 先前对某个二进制文件的发现
  • 交叉引用 不同样本之间的发现
  • 按主题、恶意软件家族或技术标记并搜索会话
工作原理
create_memory_session("analysis of ransomware sample")
    │
    ├── store_analysis_finding("Found AES-256 encryption at 0x401000", tags=["crypto", "ransomware"])
    ├── store_analysis_finding("C2 beacon interval: 30 seconds", tags=["c2", "network"])
    └── tag_analysis_session(tags=["ransomware", "financial-sector"])

# Later, in a different session:
query_analysis_memories("ransomware encryption")
    → Returns previous findings about ransomware encryption patterns

get_binary_analysis_context("sample.exe")
    → Returns all findings ever recorded for this binary

**存储:**使用异步 SQLite 数据库,路径由 MEMORY_DB_PATH 配置(默认值:~/.reversecore_mcp/memory.db)。

**可移植性:**使用 export_memory_store 和 import_memory_store 在不同环境之间传输整个记忆数据库。


Web 仪表盘

以 HTTP 模式(MCP_TRANSPORT=http)运行时,可通过 http://localhost:8000/dashboard 访问 Web 仪表盘。它提供:

  • 支持拖放的二进制文件上传
  • 实时分析状态
  • 交互式函数列表和反汇编视图
  • IOC 提取结果
  • 服务健康状态监控

**技术栈:**FastAPI + Jinja2 模板 + HTMX(从 dashboard/static/ 本地加载;为符合 CSP 要求,不依赖 CDN)。

安全功能:

  • 所有更改状态的表单均使用 CSRF 令牌
  • 已启用 Jinja2 自动转义
  • 显示前使用 html.escape() 清理所有用户输入
  • 通过 validate_file_path() 防止路径遍历

部署

生产环境检查清单

部署到生产环境之前:

项目方法
设置 API 密钥MCP_API_KEY=<strong-random-key>
使用非 root 用户内置配置:容器以 appuser(UID 1000)身份运行
设置资源限制默认值:docker-compose.yml 中为 2 CPU / 4 GB RAM
启用结构化日志使用 LOG_FORMAT=json 进行日志聚合
配置 Redis设置 REDIS_URL=redis://<host>:6379/0,用于任务队列和缓存
设置工作区路径REVERSECORE_WORKSPACE=/path/to/isolated/directory
检查速率限制REVERSECORE_RATE_LIMIT=60(次请求/分钟,可按需调整)
启用沙箱设置 REVERSECORE_SANDBOX_ENABLED=true,以隔离动态分析
健康检查

该服务提供用于编排的 HTTP 健康检查端点:

# Liveness (always 200 if process is running)
curl http://localhost:8000/health/live

# Readiness (checks tool availability)
curl http://localhost:8000/health/ready

# Full health (requires API key if configured)
curl -H "X-API-Key: <key>" http://localhost:8000/health

这些端点无需通过 API 密钥身份验证,供负载均衡器和容器编排器探测。

容器健康检查

Docker 镜像内置了 HEALTHCHECK 指令,每隔 30 秒检查一次与端口 8000 的 TCP 连接。Docker 和 Kubernetes 会自动重启状态不健康的容器。


故障排除

常见问题
工具返回 RCMCP-E003:未找到工具

环境中未安装所需的 CLI 工具。

**解决方法:**如果使用 Docker,请确认基础镜像中包含该工具:

docker exec reversecore-mcp-arm64 which r2 yara binwalk tsk_recover gdb

如果使用本地 Python 安装,请安装缺失的工具:

# macOS
brew install radare2 yara binwalk sleuthkit

# Ubuntu/Debian
apt install radare2 yara binwalk sleuthkit
超时错误(RCMCP-E002 / RCMCP-E200)

分析超出了配置的超时时间。

**解决方法:**增加超时时间:

export REVERSECORE_DEFAULT_TOOL_TIMEOUT=300  # 5 minutes

对于大型二进制文件(>100 MB),可以考虑使用快速扫描变体:

  • 使用 run_capa_quick 代替 run_capa
  • 使用 detect_packer 代替 detect_packer_deep
路径遍历错误(RCMCP-E302)

你引用了工作区目录之外的文件。

**解决方法:**先将文件复制到工作区:

copy_to_workspace("/path/to/file.exe")

或者以只读方式挂载其他目录:

export REVERSECORE_READ_DIRS=/opt/samples,/mnt/evidence
Docker 容器无法在 Apple Silicon 上启动

请确保使用 ARM64 配置:

docker compose --profile arm64 up -d

或者使用自动检测脚本:

./scripts/run-docker.sh
Redis 连接被拒绝

任务队列需要运行中的 Redis 实例。

**解决方法:**与主服务一同启动 Redis:

docker compose --profile arm64 up -d   # Starts both reversecore and redis

或者不设置 REDIS_URL,以禁用依赖 Redis 的功能。

r2ghidra 反编译产生空输出

这通常表示尚未先分析该函数。

**解决方法:**先运行分析,再进行反编译:

Radare2_analyze_binary("sample.exe")
Radare2_decompile_function("sample.exe", "main")

常见问题

这会取代 Ghidra 或 IDA Pro 吗?

不会。本项目是补充,而非替代。它使用 r2ghidra(嵌入 Radare2 的 Ghidra 反编译引擎)进行反编译。它不提供 GUI,也不具备完整反汇编器的交互式分析工作流。本项目旨在让 AI 助手以编程方式执行分析任务。

是否需要单独安装 Ghidra 或 JDK?

不需要。r2ghidra 插件将 Ghidra 反编译引擎直接嵌入 Radare2。无需 JDK,无需安装 Ghidra,也无需 Ghidra 项目文件。只需使用编译了 r2ghidra 插件的 r2 即可。

支持哪些 MCP 客户端?

任何实现了 Model Context Protocol 规范的客户端。已测试:Claude Desktop、Cursor、Windsurf 和 Google Antigravity。该服务支持 stdio 和 HTTP/SSE 传输。

我可以在 Linux/macOS 上分析 Windows PE 文件吗?

可以。静态分析(反汇编、反编译、字符串提取、IOC 提取、YARA 扫描)适用于任何文件格式,不受主机操作系统影响。动态分析(仿真、模糊测试)可能会受到目标架构的限制。

使用此工具分析恶意软件有多安全?

Docker 容器提供隔离环境:非 root 用户、CI 中默认禁用网络、资源限制。对于实时恶意软件分析,我们建议在专用 VM 中运行,或使用沙箱功能(REVERSECORE_SANDBOX_ENABLED=true)。静态分析工具(r2、YARA、strings)绝不会执行目标二进制文件。

文件大小上限是多少?

默认限制:

  • 上传:100 MB(MAX_UPLOAD_SIZE)
  • LIEF 解析:1 GB(REVERSECORE_LIEF_MAX_FILE_SIZE)
  • 工具输出:10 MB(REVERSECORE_MAX_OUTPUT_SIZE)

所有限制都可通过环境变量配置。


致谢

本项目基于众多开源项目的成果构建:

项目在 Reversecore MCP 中的作用
Radare2反汇编、仿真、二进制分析
r2ghidraRadare2 的 Ghidra 反编译引擎
FastMCPMCP 服务框架
YARA用于恶意软件检测的模式匹配
LIEF二进制格式解析(PE、ELF、Mach-O)
CAPAMandiant FLARE 能力检测
angr符号执行引擎
Capstone反汇编框架
Keystone汇编框架
pwntools漏洞利用开发工具包
ROPgadgetROP gadget 查找工具
Volatility3内存取证框架
Scapy网络数据包分析
Sleuth Kit磁盘取证工具包
Binwalk固件分析
Detect It Easy加壳器/编译器检测

许可证

MIT — 详情请参见 LICENSE。


评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。