
Framework multi-moteur pour dépaqueter et analyser des binaires protégés par VM en utilisant le suivi de teinte dynamique, l'exécution symbolique, la classification de motifs et la priorisation basée sur le ML afin d'automatiser le reverse engineering de protecteurs commerciaux et personnalisés.
Le projet sera rendu public d'ici la mi-octobre — Refactorisation en cours
Framework avancé de détection et d'analyse de machines virtuelles
VMDragonSlayer est un framework complet pour l'analyse de binaires protégés par des protecteurs basés sur des machines virtuelles (VM) tels que VMProtect 2.x/3.x, Themida et des VM malveillantes personnalisées. Le framework combine plusieurs moteurs d'analyse incluant le suivi de taint dynamique (DTT), l'exécution symbolique (SE), la classification de motifs et l'apprentissage automatique pour automatiser le processus de rétro-ingénierie.
Objectif : Transformer l'analyse complexe de binaires protégés, qui prend des semaines ou des mois de travail manuel, en une analyse structurée et automatisée avec des résultats explicables.
VMDragonSlayer utilise une architecture modulaire où plusieurs moteurs d'analyse travaillent ensemble :
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]
dragonslayer.analysis.vm_discovery)dragonslayer.analysis.taint_tracking)dragonslayer.analysis.pattern_analysis)dragonslayer.analysis.symbolic_execution)dragonslayer.ml)VMDragonSlayer/
├── dragonslayer/ # Package Python principal
│ ├── analysis/ # Moteurs d'analyse
│ │ ├── vm_discovery/ # Détection et classification de VM
│ │ ├── pattern_analysis/ # Correspondance de motifs et classification ML
│ │ ├── symbolic_execution/ # Moteur d'exécution symbolique
│ │ ├── taint_tracking/ # Analyse de taint dynamique
│ │ └── anti_evasion/ # Contre-mesures anti-analyse
│ ├── api/ # Serveur et client REST API
│ ├── core/ # Composants principaux du framework
│ ├── ml/ # Pipeline d'apprentissage automatique
│ ├── analytics/ # Rapports d'analyse et métriques
│ ├── gpu/ # Support d'accélération GPU
│ ├── utils/ # Fonctions utilitaires
├── data/ # Fichiers de configuration et de données
│ ├── patterns/ # Base de motifs
│ ├── models/ # Modèles ML et métadonnées
│ │ ├── pretrained/ # Modèles pré-entraînés (PoC)
│ │ └── metadata/ # Métadonnées et schémas des modèles
│ ├── samples/ # Fichiers d'exemples et registres
│ ├── schemas/ # Schémas JSON pour validation
│ └── training/ # Configurations d'entraînement
├── plugins/ # Plugins pour outils de rétro-ingénierie
│ ├── ghidra/ # Plugin Ghidra (Java/Gradle)
│ ├── idapro/ # Plugin IDA Pro (Python)
│ └── binaryninja/ # Plugin Binary Ninja (Python)
├── tests/ # Suite de tests
├── documentation/ # Documentation
└── LICENSE # Licence GPL v3
VMDragonSlayer s'intègre avec les principaux outils de rétro-ingénierie :
Remarque : Les modèles ML inclus sont des implémentations basiques de preuve de concept conçues pour la recherche et l'éducation.
# This now works perfectly:
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
orchestrator = Orchestrator()
result = orchestrator.analyze_binary("your_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Results are properly structured:
vmd = result.get("vm_discovery", {})
print(f"VM detected: {vmd.get('vm_detected', False)}")
print(f"Handlers found: {len(vmd.get('handlers_found', []))}")
# 1. Install with all dependencies
pip install -r requirements.txt
pip install -e .
# Clone repository
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# UPDATED INSTALLATION
# Install all required dependencies including z3-solver
pip install -r requirements.txt
# Install framework in development mode
pip install -e .
# CPU-only installation (basic functionality)
pip install -r requirements.txt
pip install -e .
# NVIDIA GPU with CUDA 12.x (RTX 30xx/40xx series)
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 (older GPUs)
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 .
Choisissez votre désassembleur préféré :
cd plugins/ghidra
./build.bat # Windows
# or
./build.sh # Linux/macOS
# Install to Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# Initialize orchestrator (loads default configuration automatically)
orchestrator = Orchestrator()
# Analyze a binary
result = orchestrator.analyze_binary("path/to/protected_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Extract VM discovery results
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 utilise une architecture modulaire avec plusieurs moteurs d'analyse :
Le framework inclut plusieurs modèles de preuve de concept :
# Core configuration
export VMDS_CONFIG_PATH="/path/to/config"
export VMDS_MODEL_PATH="/path/to/models"
export VMDS_LOG_LEVEL="INFO"
# Database configuration
export VMDS_DB_URL="sqlite:///vmds.db"
# API configuration
export VMDS_API_HOST="localhost"
export VMDS_API_PORT="8000"
data/database_config.json : Paramètres de la base de donnéesdata/taint_config.properties : Paramètres d'analyse de taintdata/models/model_registry_config.toml : Configuration des modèles MLfrom dragonslayer.core.config import Config
from dragonslayer.analysis.vm_discovery import VMDiscoveryEngine
from dragonslayer.analysis.taint_tracking import TaintTracker
# Custom configuration
config = Config({
'vm_discovery': {
'min_handler_count': 10,
'dispatcher_threshold': 0.8
},
'taint_tracking': {
'precision': 'byte_level',
'max_depth': 1000
}
})
# Initialize specific engines
vm_engine = VMDiscoveryEngine(config)
taint_tracker = TaintTracker(config)
# Run targeted analysis
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
# Process multiple binaries
manager = WorkflowManager()
results = manager.process_batch([
"sample1.exe",
"sample2.exe",
"sample3.exe"
])
# Generate summary report
manager.generate_report(results, "analysis_report.json")
Nous accueillons les contributions ! Veuillez consulter :
Ce projet est sous licence GNU General Public License v3.0. Voir LICENSE pour les détails.
Si vous utilisez VMDragonSlayer dans vos recherches, veuillez citer :
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
Un grand merci à la communauté de la rétro-ingénierie et aux développeurs des outils et bibliothèques d'analyse sous-jacents qui rendent ce framework possible.
| Domaine | Moteur / Module | Points forts |
|---|
| Découverte de VM | analysis.vm_discovery | Identification de la table du répartiteur (dispatcher) et des handlers, heuristiques de VM imbriquées |
| Analyse de motifs | analysis.pattern_analysis | Basée sur des règles + similarité + ML (sélection automatique hybride) |
| Suivi de taint | analysis.taint_tracking | Taint au niveau octet piloté par Intel Pin, découverte de handlers, confiance de flux |
| Exécution symbolique | analysis.symbolic_execution.executor | Exploration pondérée par PathPrioritizer ML, suivi des contraintes et des états |
| Orchestration hybride | (noyau Python) | Workflows séquentiels / parallèles / adaptatifs (le rapport Ghidra indique qu'il est implémenté) |
| Données synthétiques | data/training/synthetic_sample_generator.py | Mutation d'obfuscation, génération d'échantillons multi-architecture |
| Base de motifs | data/patterns/ | JSON + base améliorée + motifs runtime stockés dans SQLite |
| Plugin Ghidra | plugins/ghidra/ | Intégration UI en cours (plusieurs modèles manquants) |
| Schémas / Validation | data/schemas/ | Formats de sortie d'analyse et de motifs validés par schéma JSON |
| Outil | Statut | Date prévue | Notes |
|---|
| API directe | Stable | Disponible maintenant | Approche recommandée |
| Plugin Ghidra | En cours | Octobre 2025 | Fonctionnalités de base disponibles |
| Plugin IDA Pro | En développement | Novembre 2025 | Travail en cours - non fonctionnel |
| Plugin Binary Ninja | En développement | Novembre 2025 | Travail en cours - non fonctionnel |