
Framework multi-motore per l'unpacking e l'analisi di binari protetti da VM usando dynamic taint tracking, symbolic execution, pattern classification e prioritizzazione basata su ML per automatizzare il reverse engineering di protector commerciali e personalizzati.
Il progetto sarà reso pubblico a metà ottobre - Refactoring in corso
Framework avanzato di rilevamento e analisi di macchine virtuali
VMDragonSlayer è un framework completo per l'analisi di binari protetti da protettori basati su macchine virtuali (VM) come VMProtect 2.x/3.x, Themida e VM malware personalizzate. Il framework combina molteplici motori di analisi tra cui Dynamic Taint Tracking (DTT), Symbolic Execution (SE), Classificazione di Pattern e Machine Learning per automatizzare il processo di reverse engineering.
Obiettivo: Trasformare l'analisi complessa di binari protetti da settimane/mesi di lavoro manuale in analisi strutturata e automatizzata con risultati spiegabili.
| Dominio | Motore / Modulo | Punti salienti |
|---|---|---|
| Scoperta VM | analysis.vm_discovery | Identificazione del dispatcher e della tabella degli handler, euristiche per VM annidate |
| Analisi pattern | analysis.pattern_analysis | Basato su regole + similarità + ML (selezione automatica ibrida) |
| Taint Tracking | analysis.taint_tracking | Taint a livello di byte basato su Intel Pin, scoperta di handler, confidenza del flusso |
| Esecuzione simbolica | analysis.symbolic_execution.executor | Esplorazione pesata con PathPrioritizer ML, vincoli e tracciamento dello stato |
| Orchestrazione ibrida | (core Python) | Flussi sequenziali / paralleli / adattivi (il report di Ghidra indica che è implementato) |
| Dati sintetici | data/training/synthetic_sample_generator.py | Mutazione di offuscamento, generazione di campioni multi-architettura |
| Database pattern | data/patterns/ | JSON + DB potenziato + pattern runtime basati su SQLite |
| Plugin Ghidra | plugins/ghidra/ | Integrazione UI in corso (mancano diversi template) |
| Schemi / Validazione | data/schemas/ | Output di analisi e formati pattern validati da schema JSON |
VMDragonSlayer utilizza un'architettura modulare in cui molteplici motori di analisi lavorano insieme:
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/ # Pacchetto Python principale
│ ├── analysis/ # Motori di analisi
│ │ ├── vm_discovery/ # Rilevamento e classificazione VM
│ │ ├── pattern_analysis/ # Matching pattern e classificazione ML
│ │ ├── symbolic_execution/ # Motore di esecuzione simbolica
│ │ ├── taint_tracking/ # Analisi taint dinamica
│ │ └── anti_evasion/ # Contromisure anti-analisi
│ ├── api/ # Server e client API REST
│ ├── core/ # Componenti principali del framework
│ ├── ml/ # Pipeline di machine learning
│ ├── analytics/ # Report e metriche di analisi
│ ├── gpu/ # Supporto all'accelerazione GPU
│ ├── utils/ # Funzioni di utilità
├── data/ # File di configurazione e dati
│ ├── patterns/ # Database dei pattern
│ ├── models/ # Modelli ML e metadati
│ │ ├── pretrained/ # Modelli pre-addestrati (PoC)
│ │ └── metadata/ # Metadati e schemi dei modelli
│ ├── samples/ # File di esempio e registri
│ ├── schemas/ # Schemi JSON per validazione
│ └── training/ # Configurazioni di addestramento
├── plugins/ # Plugin per strumenti di reverse engineering
│ ├── ghidra/ # Plugin Ghidra (Java/Gradle)
│ ├── idapro/ # Plugin IDA Pro (Python)
│ └── binaryninja/ # Plugin Binary Ninja (Python)
├── tests/ # Suite di test
├── documentation/ # Documentazione
└── LICENSE # Licenza GPL v3
VMDragonSlayer si integra con i principali strumenti di reverse engineering:
Nota: I modelli ML inclusi sono implementazioni proof-of-concept di base progettate per scopi di ricerca e didattici.
# Ora funziona perfettamente:
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
orchestrator = Orchestrator()
result = orchestrator.analyze_binary("your_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# I risultati sono strutturati correttamente:
vmd = result.get("vm_discovery", {})
print(f"VM detected: {vmd.get('vm_detected', False)}")
print(f"Handlers found: {len(vmd.get('handlers_found', []))}")
# 1. Installa con tutte le dipendenze
pip install -r requirements.txt
pip install -e .
# Clona il repository
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# INSTALLAZIONE AGGIORNATA
# Installa tutte le dipendenze richieste incluso z3-solver
pip install -r requirements.txt
# Installa il framework in modalità di sviluppo
pip install -e .
# Installazione solo CPU (funzionalità di base)
pip install -r requirements.txt
pip install -e .
# GPU NVIDIA con CUDA 12.x (serie RTX 30xx/40xx)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -e .
# GPU NVIDIA con CUDA 11.8 (GPU più vecchie)
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 .
Scegli il tuo disassemblatore preferito:
cd plugins/ghidra
./build.bat # Windows
# oppure
./build.sh # Linux/macOS
# Installa in Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# Inizializza l'orchestrator (carica automaticamente la configurazione predefinita)
orchestrator = Orchestrator()
# Analizza un binario
result = orchestrator.analyze_binary("path/to/protected_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Estrai i risultati della scoperta VM
vmd = result.get("vm_discovery", {})
print(f"Protezione VM rilevata: {vmd.get('vm_detected', False)}")
print(f"Conteggio handler: {len(vmd.get('handlers_found', []))}")
print(f"Analisi riuscita: {result.get('success', False)}")
VMDragonSlayer utilizza un'architettura modulare con molteplici motori di analisi:
Il framework include diversi modelli proof-of-concept:
# Configurazione principale
export VMDS_CONFIG_PATH="/path/to/config"
export VMDS_MODEL_PATH="/path/to/models"
export VMDS_LOG_LEVEL="INFO"
# Configurazione database
export VMDS_DB_URL="sqlite:///vmds.db"
# Configurazione API
export VMDS_API_HOST="localhost"
export VMDS_API_PORT="8000"
data/database_config.json: Impostazioni del databasedata/taint_config.properties: Parametri dell'analisi taintdata/models/model_registry_config.toml: Configurazione dei modelli MLfrom dragonslayer.core.config import Config
from dragonslayer.analysis.vm_discovery import VMDiscoveryEngine
from dragonslayer.analysis.taint_tracking import TaintTracker
# Configurazione personalizzata
config = Config({
'vm_discovery': {
'min_handler_count': 10,
'dispatcher_threshold': 0.8
},
'taint_tracking': {
'precision': 'byte_level',
'max_depth': 1000
}
})
# Inizializza motori specifici
vm_engine = VMDiscoveryEngine(config)
taint_tracker = TaintTracker(config)
# Esegui analisi mirata
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
# Processa più binari
manager = WorkflowManager()
results = manager.process_batch([
"sample1.exe",
"sample2.exe",
"sample3.exe"
])
# Genera report di riepilogo
manager.generate_report(results, "analysis_report.json")
Accogliamo con favore i contributi! Consultare:
Questo progetto è concesso in licenza secondo i termini della GNU General Public License v3.0. Consultare LICENSE per i dettagli.
Se utilizzi VMDragonSlayer nella tua ricerca, cita:
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
Un ringraziamento speciale alla community del reverse engineering e agli sviluppatori degli strumenti e delle librerie di analisi sottostanti che rendono possibile questo framework.
| Strumento | Stato | ETA | Note |
|---|
| API diretta | Stabile | Disponibile ora | Approccio consigliato |
| Plugin Ghidra | In corso | Ottobre 2025 | Funzionalità di base disponibili |
| Plugin IDA Pro | In sviluppo | Novembre 2025 | In lavorazione - non funzionale |
| Plugin Binary Ninja | In sviluppo | Novembre 2025 | In lavorazione - non funzionale |