
Multi-Engine-Framework zum Entpacken und Analysieren von VM-geschützten Binärdateien mittels dynamischer Taint-Analyse, symbolischer Ausführung, Musterklassifikation und ML-gesteuerter Priorisierung, um das Reverse Engineering von kommerziellen und benutzerdefinierten Protectoren zu automatisieren.
Das Projekt wird Mitte Oktober veröffentlicht. Refactoring läuft.
Fortschrittliches Framework zur Erkennung und Analyse von Virtuellen Maschinen
VMDragonSlayer ist ein umfassendes Framework zur Analyse von Binärdateien, die durch VM-basierte Schutzhüllen wie VMProtect 2.x/3.x, Themida und benutzerdefinierte Malware-VMs geschützt sind. Das Framework kombiniert mehrere Analyse-Engines, darunter Dynamic Taint Tracking (DTT), Symbolic Execution (SE), Pattern Classification und Machine Learning, um den Reverse-Engineering-Prozess zu automatisieren.
Ziel: Die Analyse komplexer geschützter Binärdateien von Wochen/Monaten manueller Arbeit in eine strukturierte, automatisierte Analyse mit erklärbaren Ergebnissen umwandeln.
| Bereich | Engine / Modul | Highlights |
|---|---|---|
| VM-Erkennung | analysis.vm_discovery | Identifizierung von Dispatcher- und Handler-Tabellen, verschachtelte VM-Heuristiken |
| Musteranalyse | analysis.pattern_analysis | Regelbasiert + Ähnlichkeit + ML (hybride automatische Auswahl) |
| Taint-Tracking | analysis.taint_tracking | Intel Pin–gesteuertes Byte-Level-Taint, Handler-Erkennung, Fluss-Konfidenz |
| Symbolische Ausführung | analysis.symbolic_execution.executor | PathPrioritizer ML-gewichtete Exploration, Constraint- und Zustandsverfolgung |
| Hybrid-Orchestrierung | (Python-Kern) | Sequenzielle / parallele / adaptive Workflows (Ghidra-Bericht zeigt Implementierung an) |
| Synthetische Daten | data/training/synthetic_sample_generator.py | Obfuskations-Mutation, Multi-Architektur-Beispielgenerierung |
| Muster-DB | data/patterns/ | JSON + erweiterte DB + SQLite-gestützte Laufzeitmuster |
| Ghidra-Plugin | plugins/ghidra/ | UI-Integration in Arbeit (mehrere Vorlagen fehlen) |
| Schemata / Validierung | data/schemas/ | JSON-Schema–validierte Analyseausgabe- und Musterformate |
VMDragonSlayer verwendet eine modulare Architektur, in der mehrere Analyse-Engines zusammenarbeiten:
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/ # Haupt-Python-Paket
│ ├── analysis/ # Analyse-Engines
│ │ ├── vm_discovery/ # VM-Erkennung und -Klassifikation
│ │ ├── pattern_analysis/ # Musterabgleich und ML-Klassifikation
│ │ ├── symbolic_execution/ # Symbolische Ausführungs-Engine
│ │ ├── taint_tracking/ # Dynamische Taint-Analyse
│ │ └── anti_evasion/ # Anti-Analyse-Gegenmaßnahmen
│ ├── api/ # REST-API-Server und -Client
│ ├── core/ # Kernkomponenten des Frameworks
│ ├── ml/ # Machine-Learning-Pipeline
│ ├── analytics/ # Analyseberichte und Metriken
│ ├── gpu/ # GPU-Beschleunigungsunterstützung
│ ├── utils/ # Hilfsfunktionen
├── data/ # Konfigurations- und Datendateien
│ ├── patterns/ # Musterdatenbank
│ ├── models/ # ML-Modelle und Metadaten
│ │ ├── pretrained/ # Vorgewichtete Modelle (PoC)
│ │ └── metadata/ # Modell-Metadaten und Schemata
│ ├── samples/ # Beispieldateien und Register
│ ├── schemas/ # JSON-Schemata zur Validierung
│ └── training/ # Trainingskonfigurationen
├── plugins/ # Reverse-Engineering-Tool-Plugins
│ ├── ghidra/ # Ghidra-Plugin (Java/Gradle)
│ ├── idapro/ # IDA-Pro-Plugin (Python)
│ └── binaryninja/ # Binary-Ninja-Plugin (Python)
├── tests/ # Testsuite
├── documentation/ # Dokumentation
└── LICENSE # GPL v3 Lizenz
VMDragonSlayer integriert sich mit den wichtigsten Reverse-Engineering-Tools:
Hinweis: Die enthaltenen ML-Modelle sind grundlegende Proof-of-Concept-Implementierungen, die für Forschungs- und Bildungszwecke konzipiert sind.
# 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 .
Wählen Sie Ihren bevorzugten Disassembler:
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 verwendet eine modulare Architektur mit mehreren Analyse-Engines:
Das Framework enthält mehrere Proof-of-Concept-Modelle:
# 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: Datenbankeinstellungendata/taint_config.properties: Taint-Analyse-Parameterdata/models/model_registry_config.toml: ML-Modellkonfigurationfrom 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")
Wir begrüßen Beiträge! Bitte siehe:
Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert. Siehe LICENSE für Details.
Wenn Sie VMDragonSlayer in Ihrer Forschung verwenden, zitieren Sie bitte:
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
Besonderer Dank gilt der Reverse-Engineering-Community und den Entwicklern der zugrunde liegenden Analyse-Tools und Bibliotheken, die dieses Framework ermöglichen.
| Werkzeug | Status | Voraussichtlich | Anmerkungen |
|---|
| Direkte API | Stabil | Jetzt verfügbar | Empfohlener Ansatz |
| Ghidra-Plugin | In Bearbeitung | Oktober 2025 | Grundlegende Funktionalität verfügbar |
| IDA-Pro-Plugin | In Entwicklung | November 2025 | In Arbeit – nicht funktionsfähig |
| Binary-Ninja-Plugin | In Entwicklung | November 2025 | In Arbeit – nicht funktionsfähig |