poppopjmp/VMDragonSlayer
GitHub: poppopjmp/VMDragonSlayer
多引擎自动化框架,用于分析、脱壳和反虚拟化受 VMProtect/Themida 等虚拟机保护的二进制文件。
Stars: 331 | Forks: 58
# VMDragonSlayer
**项目将于 10 月中旬公开,目前正在进行重构**
**高级虚拟机检测与分析框架**
VMDragonSlayer 是一个综合性的框架,用于分析受虚拟机 (VM) 保护器(如 VMProtect 2.x/3.x、Themida 和自定义恶意软件 VM)保护的二进制文件。该框架结合了多种分析引擎,包括动态污点追踪 (DTT)、符号执行 (SE)、模式分类和机器学习,以实现逆向工程过程的自动化。
## 关键特性
- **多引擎分析**:结合了静态、动态和混合分析技术
- **VM 检测**:自动检测商业和自定义 VM 保护器
- **插件生态系统**:集成 Ghidra、IDA Pro 和 Binary Ninja
- **机器学习**:用于模式分类的概念验证 ML 模型
- **可扩展架构**:支持自定义分析工作流的模块化设计
- **研究框架**:专为恶意软件研究和逆向工程教育而构建
## 核心能力
| 领域 | 引擎 / 模块 | 亮点 |
|--------|-----------------|-----------|
| VM 发现 | `analysis.vm_discovery` | Dispatcher 与 handler 表识别,嵌套 VM 启发式分析 |
| 模式分析 | `analysis.pattern_analysis` | 基于规则 + 相似度 + ML(混合自动选择) |
| 污点追踪 | `analysis.taint_tracking` | Intel Pin 驱动的字节级污点分析,handler 发现,流置信度 |
| 符号执行 | `analysis.symbolic_execution.executor` | PathPrioritizer ML 加权探索,约束与状态跟踪 |
| 混合编排 | (Python core) | 顺序 / 并行 / 自适应工作流(Ghidra 报告显示已实现) |
| 合成数据 | `data/training/synthetic_sample_generator.py` | 混淆变异,多架构样本生成 |
| 模式数据库 | `data/patterns/` | JSON + 增强型 DB + SQLite 支持的运行时模式 |
| Ghidra 插件 | `plugins/ghidra/` | 正在进行 UI 集成(缺少部分模板) |
| Schema / 验证 | `data/schemas/` | JSON schema 验证的分析输出及模式格式 |
## 架构概览
VMDragonSlayer 采用模块化架构,多个分析引擎协同工作:
```
graph TD
A[VM Discovery Engine] --> B[Pattern/ML Classifier]
B --> C[Symbolic Execution Engine]
B --> D[Dynamic Taint Tracker]
D --> C
subgraph DataSources ["Data Sources"]
E[Pattern Database]
F[ML Models - PoC]
end
subgraph Coordination
G[Orchestrator - Workflow Management & Coordination]
end
E --> B
F --> B
A --> G
B --> G
C --> G
D --> G
E --> G
F --> G
G --> H[REST API Server]
G --> I[Plugins - RE Tools]
```
### 核心分析引擎
#### 1. **VM 发现引擎** (`dragonslayer.analysis.vm_discovery`)
- **用途**:检测并分类基于 VM 的保护方案
- **技术**:Dispatcher 循环检测、handler 表分析、控制流启发式分析
- **目标**:VMProtect、Themida、自定义恶意软件 VM、嵌套保护
#### 2. **动态污点追踪** (`dragonslayer.analysis.taint_tracking`)
- **用途**:追踪 VM 执行过程中的数据流,以识别关键路径
- **实现**:基于 Intel Pin 的插桩,具备字节级精度
- **功能**:影子内存、反分析规避、自动化 handler 发现
#### 3. **模式分析** (`dragonslayer.analysis.pattern_analysis`)
- **用途**:对 VM 模式和行为进行分类
- **方法**:基于规则的匹配、相似度分析、ML 分类
- **数据库**:基于 JSON schema 的可扩展模式数据库
#### 4. **符号执行** (`dragonslayer.analysis.symbolic_execution`)
- **用途**:符号化探索 VM 执行路径
- **功能**:约束求解、路径优先级排序、状态合并
- **集成**:利用污点分析结果来引导探索
#### 5. **机器学习流水线** (`dragonslayer.ml`)
- **用途**:自动化分类和分析辅助
- **模型**:用于研究和教育的基础概念验证模型
- **组件**:特征提取、模型训练、集成预测
## 仓库结构
```
VMDragonSlayer/
├── dragonslayer/ # Main Python package
│ ├── analysis/ # Analysis engines
│ │ ├── vm_discovery/ # VM detection and classification
│ │ ├── pattern_analysis/ # Pattern matching and ML classification
│ │ ├── symbolic_execution/ # Symbolic execution engine
│ │ ├── taint_tracking/ # Dynamic taint analysis
│ │ └── anti_evasion/ # Anti-analysis countermeasures
│ ├── api/ # REST API server and client
│ ├── core/ # Core framework components
│ ├── ml/ # Machine learning pipeline
│ ├── analytics/ # Analysis reporting and metrics
│ ├── gpu/ # GPU acceleration support
│ ├── utils/ # Utility functions
├── data/ # Configuration and data files
│ ├── patterns/ # Pattern database
│ ├── models/ # ML models and metadata
│ │ ├── pretrained/ # Pre-trained models (PoC)
│ │ └── metadata/ # Model metadata and schemas
│ ├── samples/ # Sample files and registries
│ ├── schemas/ # JSON schemas for validation
│ └── training/ # Training configurations
├── plugins/ # Reverse engineering tool plugins
│ ├── ghidra/ # Ghidra plugin (Java/Gradle)
│ ├── idapro/ # IDA Pro plugin (Python)
│ └── binaryninja/ # Binary Ninja plugin (Python)
├── tests/ # Tests suite
├── documentation/ # Documentation
└── LICENSE # GPL v3 License
```
## 插件生态系统
VMDragonSlayer 集成了主流的逆向工程工具:
### Ghidra 插件
- **语言**:Java,使用 Gradle 构建系统
- **功能**:VM 分析 UI、模式可视化、自动化分析工作流
- **状态**:框架已实现,UI 组件开发中
### IDA Pro 插件
- **语言**:Python
- **功能**:与 IDA 分析引擎无缝集成
- **状态**:核心功能可用
### Binary Ninja 插件
- **语言**:Python
- **功能**:原生 Binary Ninja API 集成
- **状态**:基础集成已实现
## 机器学习组件
**注意**:包含的 ML 模型是基础的概念验证实现,专为研究和教育目的而设计。
## 安装
### 前置条件
- Python 3.8 或更高版本
- 一个或多个逆向工程工具:
- Ghidra 10.0+(用于 Ghidra 插件)
- IDA Pro 7.0+(用于 IDA 插件)
- Binary Ninja(用于 Binary Ninja 插件)
## 硬件要求
### 最低要求
- **CPU**:现代 x64 处理器
- **RAM**:最低 8GB,推荐 16GB
- **存储**:5GB 可用空间
- **OS**:Windows 10/11, Linux (Ubuntu 20.04+), macOS 11+
### GPU 要求(可选但推荐)
- **NVIDIA GPU**:GTX 1060 或更新型号以获得最佳性能
- **CUDA**:版本 11.8 或 12.1+(随 PyTorch 自动安装)
- **VRAM**:ML 模型最低需要 4GB
### 重要限制
- **虚拟机**:GPU 加速功能需要直接硬件访问,可能无法在 VM 中工作
- **WSL**:部分 GPU 功能在 WSL 环境中可能存在功能限制
- **远程服务器**:确保正确安装 CUDA 驱动程序以进行无头 GPU 访问
## 当前状态(已修复问题)
### 已验证可用示例
```
# 现在可以完美运行:
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 .
```
### 核心框架
```
# Clone repository
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# 更新的安装说明
# 安装所有必需的依赖项,包括 z3-solver
pip install -r requirements.txt
# 以开发模式安装 framework
pip install -e .
```
### 针对不同硬件的安装
```
# 仅 CPU 安装(基本功能)
pip install -r requirements.txt
pip install -e .
# 配备 CUDA 12.x 的 NVIDIA GPU(RTX 30xx/40xx 系列)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -e .
# 配备 CUDA 11.8 的 NVIDIA GPU(旧款 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 .
### 插件安装
选择您首选的反汇编器:
#### Ghidra 插件
```
cd plugins/ghidra
./build.bat # Windows
# 或
./build.sh # Linux/macOS
# 安装到 Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
```
## 快速开始
### 1. 基础框架使用
```
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# 初始化 orchestrator(自动加载默认配置)
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)}")
```
## 插件状态
### 逆向工程工具集成
| 工具 | 状态 | 预计时间 | 备注 |
|------|---------|-----|-------|
| **Direct API** | 稳定 | 现已可用 | 推荐方式 |
| **Ghidra Plugin** | 开发中 | 2025 年 10 月 | 基础功能可用 |
| **IDA Pro Plugin** | 开发中 | 2025 年 11 月 | 开发进行中 - 尚不可用 |
| **Binary Ninja Plugin** | 开发中 | 2025 年 11 月 | 开发进行中 - 尚不可用 |
## 架构
VMDragonSlayer 采用模块化架构,包含多个分析引擎:
### 分析引擎
#### VM 发现引擎
- **Dispatcher 检测**:使用控制流分析识别 VM dispatcher 循环
- **Handler 映射**:映射 VM handler 及其关系
- **架构识别**:检测 VMProtect、Themida 和自定义 VM 架构
#### 污点追踪引擎
- **动态分析**:追踪通过 VM handler 的数据流
- **精度控制**:字节级或指令级粒度
- **反规避**:绕过常见的分析检测技术
#### 模式分析引擎
- **签名匹配**:基于规则的模式识别
- **ML 分类**:基于机器学习的 handler 分类
- **相似度分析**:用于变体检测的模糊匹配
#### 符号执行引擎
- **路径探索**:系统性地探索执行路径
- **约束求解**:基于 Z3 的约束解析
- **VM 感知分析**:针对虚拟化代码的专门处理
### 机器学习模型
该框架包含几个概念验证模型:
#### 可用模型
- **Bytecode Classifier**:VM 字节码序列中的模式识别
- **VM Detector**:VM 保护存在的二元分类
- **Handler Classifier**:VM handler 类型分类
- **VMProtect Detector**:VMProtect 模式的专用检测器
- **Ensemble Model**:结合多个分类器以提高准确性
#### 模型特征
- **格式**:Scikit-learn 兼容(joblib 序列化)
- **大小**:适合快速原型设计的小型模型
- **用途**:教育示例和研究基准
- **训练数据**:合成数据和有限的现实世界样本
## 配置
### 环境变量
```
# 核心配置
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
}
})
# 初始化特定 engine
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")
```
## 贡献
我们欢迎贡献!请参阅:
- [CONTRIBUTING.md](CONTRIBUTING.md) - 开发指南
- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) - 社区标准
- [SECURITY.md](SECURITY.md) - 安全策略
## 许可证
本项目采用 GNU General Public License v3.0 许可。详情请参见 [LICENSE](LICENSE)。
## 引用
如果您在研究中使用 VMDragonSlayer,请引用:
```
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
```
## 联系方式
- **作者**:van1sh
- **邮箱**:van1sh@securitybsides.it
- **GitHub**:[@poppopjmp](https://github.com/poppopjmp)
## 致谢
特别感谢逆向工程社区以及底层分析工具和库的开发者,是他们让这个框架成为可能。
标签:Apex, Binary Ninja, DNS 反向解析, Ghidra 插件, IDA Pro 插件, IP 地址批量处理, Themida, Vectored Exception Handling, VMProtect, 中高交互蜜罐, 二进制分析, 云安全运维, 云资产清单, 代码虚拟化, 凭据扫描, 动态污点分析, 反混淆, 反病毒分析, 域名收集, 恶意软件开发, 机器学习, 端点检测与响应, 符号执行, 脱壳工具, 自动化分析, 虚拟机保护, 跨站脚本, 逆向工具, 逆向工程