多引擎框架,用于解包和分析 VM 保护的二进制文件,采用动态污点跟踪、符号执行、模式分类和机器学习驱动的优先级排序,自动化逆向工程商业及自定义保护器。
项目将于10月中旬公开,重构进行中
先进的虚拟机检测与分析框架
VMDragonSlayer 是一个用于分析受虚拟机(VM)保护器(如 VMProtect 2.x/3.x、Themida 以及自定义恶意软件 VM)保护的二进制文件的综合框架。该框架结合了动态污点跟踪(DTT)、符号执行(SE)、模式分类和机器学习等多种分析引擎,以自动化逆向工程过程。
目标:将复杂的受保护二进制分析从数周/数月的人工工作转变为结构化、自动化的分析,并提供可解释的结果。
| 领域 | 引擎/模块 | 亮点 |
|---|---|---|
| VM 发现 | analysis.vm_discovery | 调度器与处理表识别、嵌套 VM 启发式 |
| 模式分析 | analysis.pattern_analysis | 规则 + 相似度 + ML(混合自动选择) |
| 污点跟踪 | analysis.taint_tracking | 基于 Intel Pin 的字节级污点、处理发现、流置信度 |
| 符号执行 | analysis.symbolic_execution.executor | PathPrioritizer ML 加权探索、约束与状态跟踪 |
| 混合编排 | (Python 核心) | 顺序 / 并行 / 自适应工作流(Ghidra 报告表明已实现) |
| 合成数据 | data/training/synthetic_sample_generator.py | 混淆变异、多架构样本生成 |
| 模式数据库 | data/patterns/ | JSON + 增强 DB + SQLite 支持的运行时模式 |
| Ghidra 插件 | plugins/ghidra/ | 进行中的 UI 集成(缺少几个模板) |
| 模式/验证 | data/schemas/ | 基于 JSON schema 验证的分析输出与模式格式 |
VMDragonSlayer 采用模块化架构,多个分析引擎协同工作:
graph TD
A[VM 发现引擎] --> B[模式/ML 分类器]
B --> C[符号执行引擎]
B --> D[动态污点跟踪器]
D --> C
subgraph DataSources ["数据源"]
E[模式数据库]
F[ML 模型 - PoC]
end
subgraph Coordination
G[编排器 - 工作流管理与协调]
end
E --> B
F --> B
A --> G
B --> G
C --> G
D --> G
E --> G
F --> G
G --> H[REST API 服务器]
G --> I[插件 - RE 工具]dragonslayer.analysis.vm_discovery)dragonslayer.analysis.taint_tracking)dragonslayer.analysis.pattern_analysis)dragonslayer.analysis.symbolic_execution)dragonslayer.ml)VMDragonSlayer/
├── dragonslayer/ # 主 Python 包
│ ├── analysis/ # 分析引擎
│ │ ├── vm_discovery/ # VM 检测与分类
│ │ ├── pattern_analysis/ # 模式匹配与 ML 分类
│ │ ├── symbolic_execution/ # 符号执行引擎
│ │ ├── taint_tracking/ # 动态污点分析
│ │ └── anti_evasion/ # 反分析对抗措施
│ ├── api/ # REST API 服务器与客户端
│ ├── core/ # 核心框架组件
│ ├── ml/ # 机器学习流水线
│ ├── analytics/ # 分析报告与度量
│ ├── gpu/ # GPU 加速支持
│ ├── utils/ # 工具函数
├── data/ # 配置文件与数据文件
│ ├── patterns/ # 模式数据库
│ ├── models/ # ML 模型与元数据
│ │ ├── pretrained/ # 预训练模型 (PoC)
│ │ └── metadata/ # 模型元数据与模式
│ ├── samples/ # 样本文件与注册表
│ ├── schemas/ # 用于验证的 JSON 模式
│ └── training/ # 训练配置
├── plugins/ # 逆向工程工具插件
│ ├── ghidra/ # Ghidra 插件(Java/Gradle)
│ ├── idapro/ # IDA Pro 插件(Python)
│ └── binaryninja/ # Binary Ninja 插件(Python)
├── tests/ # 测试套件
├── documentation/ # 文档
└── LICENSE # GPL v3 许可证
VMDragonSlayer 与主要逆向工程工具集成:
注意:包含的 ML 模型是基本的概念验证实现,用于研究和教育目的。
# 现在可以完美运行:
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
orchestrator = Orchestrator()
result = orchestrator.analyze_binary("your_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# 结果结构正确:
vmd = result.get("vm_discovery", {})
print(f"VM detected: {vmd.get('vm_detected', False)}")
print(f"Handlers found: {len(vmd.get('handlers_found', []))}")
# 1. 安装所有依赖
pip install -r requirements.txt
pip install -e .
# 克隆仓库
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# 更新后的安装
# 安装所有必要依赖,包括 z3-solver
pip install -r requirements.txt
# 以开发模式安装框架
pip install -e .
# 仅 CPU 安装(基本功能)
pip install -r requirements.txt
pip install -e .
# NVIDIA GPU with CUDA 12.x (RTX 30xx/40xx 系列)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -e .
# NVIDIA GPU with CUDA 11.8 (较旧 GPU)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -e .
python -m venv venv source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
pip install -r requirements.txt
cd dragonslayer pip install -e .
选择您偏好的反汇编器:
cd plugins/ghidra
./build.bat # Windows
# 或
./build.sh # Linux/macOS
# 安装到 Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# 初始化编排器(自动加载默认配置)
orchestrator = Orchestrator()
# 分析二进制文件
result = orchestrator.analyze_binary("path/to/protected_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# 提取 VM 发现结果
vmd = result.get("vm_discovery", {})
print(f"VM Protection Detected: {vmd.get('vm_detected', False)}")
print(f"Handler Count: {len(vmd.get('handlers_found', []))}")
print(f"Analysis Success: {result.get('success', False)}")
VMDragonSlayer 采用模块化架构,包含多个分析引擎:
该框架包含几个概念验证模型:
# 核心配置
export VMDS_CONFIG_PATH="/path/to/config"
export VMDS_MODEL_PATH="/path/to/models"
export VMDS_LOG_LEVEL="INFO"
# 数据库配置
export VMDS_DB_URL="sqlite:///vmds.db"
# API 配置
export VMDS_API_HOST="localhost"
export VMDS_API_PORT="8000"
data/database_config.json:数据库设置data/taint_config.properties:污点分析参数data/models/model_registry_config.toml:ML 模型配置from dragonslayer.core.config import Config
from dragonslayer.analysis.vm_discovery import VMDiscoveryEngine
from dragonslayer.analysis.taint_tracking import TaintTracker
# 自定义配置
config = Config({
'vm_discovery': {
'min_handler_count': 10,
'dispatcher_threshold': 0.8
},
'taint_tracking': {
'precision': 'byte_level',
'max_depth': 1000
}
})
# 初始化特定引擎
vm_engine = VMDiscoveryEngine(config)
taint_tracker = TaintTracker(config)
# 运行针对性分析
vm_result = vm_engine.analyze("binary.exe")
if vm_result.vm_detected:
taint_result = taint_tracker.analyze(vm_result.handlers)
from dragonslayer.workflows.manager import WorkflowManager
# 处理多个二进制文件
manager = WorkflowManager()
results = manager.process_batch([
"sample1.exe",
"sample2.exe",
"sample3.exe"
])
# 生成摘要报告
manager.generate_report(results, "analysis_report.json")
我们欢迎贡献!请参阅:
本项目采用 GNU General Public License v3.0 许可证。详情请参见 LICENSE。
如果您在研究中使用 VMDragonSlayer,请引用:
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
特别感谢逆向工程社区以及使该框架成为可能的底层分析工具和库的开发者。
| 工具 | 状态 | 预计完成时间 | 备注 |
|---|
| Direct API | 稳定 | 现已可用 | 推荐方法 |
| Ghidra 插件 | 进行中 | 2025年10月 | 基本功能可用 |
| IDA Pro 插件 | 开发中 | 2025年11月 | 进行中 - 尚未可用 |
| Binary Ninja 插件 | 开发中 | 2025年11月 | 进行中 - 尚未可用 |