
Framework multi-mecanismo para desempacotar e analisar binários protegidos por VM usando rastreamento dinâmico de manchas, execução simbólica, classificação de padrões e priorização orientada por ML para automatizar a engenharia reversa de proteções comerciais e personalizadas.
Projeto será público até meados de outubro - Refatoração em andamento
Framework Avançado de Detecção e Análise de Máquinas Virtuais
VMDragonSlayer é um framework abrangente para análise de binários protegidos por protetores baseados em Máquina Virtual (VM) como VMProtect 2.x/3.x, Themida e VMs personalizadas de malware. O framework combina múltiplos motores de análise, incluindo Rastreamento Dinâmico de Taint (DTT), Execução Simbólica (SE), Classificação de Padrões e Aprendizado de Máquina para automatizar o processo de engenharia reversa.
Objetivo: Transformar a análise complexa de binários protegidos de semanas/meses de trabalho manual em uma análise estruturada e automatizada com resultados explicáveis.
| Domínio | Motor / Módulo | Destaques |
|---|---|---|
| Descoberta de VM | analysis.vm_discovery | Identificação de tabela de despacho e manipuladores, heurísticas de VM aninhada |
| Análise de Padrões | analysis.pattern_analysis | Baseado em regras + similaridade + ML (seleção automática híbrida) |
| Rastreamento de Taint | analysis.taint_tracking | Taint em nível de byte orientado por Intel Pin, descoberta de manipuladores, confiança de fluxo |
| Execução Simbólica | analysis.symbolic_execution.executor | Exploração ponderada por ML com PathPrioritizer, rastreamento de restrições e estados |
| Orquestração Híbrida | (núcleo Python) | Fluxos de trabalho sequenciais / paralelos / adaptativos (relatório Ghidra indica implementado) |
| Dados Sintéticos | data/training/synthetic_sample_generator.py | Mutação de ofuscação, geração de amostras multi-arquitetura |
| Banco de Padrões | data/patterns/ | JSON + BD aprimorado + padrões de tempo de execução baseados em SQLite |
| Plugin Ghidra | plugins/ghidra/ | Integração de UI em andamento (vários templates faltando) |
| Esquemas / Validação | data/schemas/ | Esquemas JSON para validação de saída de análise e formatos de padrões |
VMDragonSlayer usa uma arquitetura modular onde múltiplos motores de análise trabalham juntos:
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/ # Pacote Python principal
│ ├── analysis/ # Motores de análise
│ │ ├── vm_discovery/ # Detecção e classificação de VM
│ │ ├── pattern_analysis/ # Correspondência de padrões e classificação ML
│ │ ├── symbolic_execution/ # Motor de execução simbólica
│ │ ├── taint_tracking/ # Análise dinâmica de taint
│ │ └── anti_evasion/ # Contramedidas de anti-análise
│ ├── api/ # Servidor e cliente REST API
│ ├── core/ # Componentes principais do framework
│ ├── ml/ # Pipeline de aprendizado de máquina
│ ├── analytics/ # Relatórios de análise e métricas
│ ├── gpu/ # Suporte a aceleração GPU
│ ├── utils/ # Funções utilitárias
├── data/ # Arquivos de configuração e dados
│ ├── patterns/ # Banco de padrões
│ ├── models/ # Modelos ML e metadados
│ │ ├── pretrained/ # Modelos pré-treinados (PoC)
│ │ └── metadata/ # Metadados e esquemas de modelos
│ ├── samples/ # Amostras e registros de amostras
│ ├── schemas/ # Esquemas JSON para validação
│ └── training/ # Configurações de treinamento
├── plugins/ # Plugins de ferramentas de engenharia reversa
│ ├── ghidra/ # Plugin Ghidra (Java/Gradle)
│ ├── idapro/ # Plugin IDA Pro (Python)
│ └── binaryninja/ # Plugin Binary Ninja (Python)
├── tests/ # Conjunto de testes
├── documentation/ # Documentação
└── LICENSE # Licença GPL v3
VMDragonSlayer integra-se com as principais ferramentas de engenharia reversa:
Nota: Os modelos ML incluídos são implementações básicas de prova de conceito projetadas para fins de pesquisa e educacionais.
# Isso agora funciona perfeitamente:
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
orchestrator = Orchestrator()
result = orchestrator.analyze_binary("your_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Os resultados estão devidamente estruturados:
vmd = result.get("vm_discovery", {})
print(f"VM detectada: {vmd.get('vm_detected', False)}")
print(f"Manipuladores encontrados: {len(vmd.get('handlers_found', []))}")
# 1. Instalar com todas as dependências
pip install -r requirements.txt
pip install -e .
# Clonar repositório
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# INSTALAÇÃO ATUALIZADA
# Instalar todas as dependências necessárias, incluindo z3-solver
pip install -r requirements.txt
# Instalar framework em modo de desenvolvimento
pip install -e .
# Instalação apenas CPU (funcionalidade básica)
pip install -r requirements.txt
pip install -e .
# GPU NVIDIA com CUDA 12.x (séries 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 com CUDA 11.8 (GPUs mais antigas)
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 .
Escolha seu descompilador preferido:
cd plugins/ghidra
./build.bat # Windows
# ou
./build.sh # Linux/macOS
# Instalar no Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# Inicializar orchestrator (carrega configuração padrão automaticamente)
orchestrator = Orchestrator()
# Analisar um binário
result = orchestrator.analyze_binary("path/to/protected_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Extrair resultados da descoberta de VM
vmd = result.get("vm_discovery", {})
print(f"Proteção de VM Detectada: {vmd.get('vm_detected', False)}")
print(f"Contagem de Manipuladores: {len(vmd.get('handlers_found', []))}")
print(f"Sucesso da Análise: {result.get('success', False)}")
VMDragonSlayer usa uma arquitetura modular com múltiplos motores de análise:
O framework inclui vários modelos de prova de conceito:
# Configuração principal
export VMDS_CONFIG_PATH="/path/to/config"
export VMDS_MODEL_PATH="/path/to/models"
export VMDS_LOG_LEVEL="INFO"
# Configuração do banco de dados
export VMDS_DB_URL="sqlite:///vmds.db"
# Configuração da API
export VMDS_API_HOST="localhost"
export VMDS_API_PORT="8000"
data/database_config.json: Configurações do banco de dadosdata/taint_config.properties: Parâmetros de análise de taintdata/models/model_registry_config.toml: Configuração do modelo MLfrom dragonslayer.core.config import Config
from dragonslayer.analysis.vm_discovery import VMDiscoveryEngine
from dragonslayer.analysis.taint_tracking import TaintTracker
# Configuração personalizada
config = Config({
'vm_discovery': {
'min_handler_count': 10,
'dispatcher_threshold': 0.8
},
'taint_tracking': {
'precision': 'byte_level',
'max_depth': 1000
}
})
# Inicializar motores específicos
vm_engine = VMDiscoveryEngine(config)
taint_tracker = TaintTracker(config)
# Executar análise direcionada
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
# Processar múltiplos binários
manager = WorkflowManager()
results = manager.process_batch([
"sample1.exe",
"sample2.exe",
"sample3.exe"
])
# Gerar relatório resumido
manager.generate_report(results, "analysis_report.json")
Recebemos contribuições! Por favor, veja:
Este projeto está licenciado sob a Licença Pública Geral GNU v3.0. Veja LICENSE para detalhes.
Se você usar VMDragonSlayer em sua pesquisa, por favor, cite:
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
Agradecimentos especiais à comunidade de engenharia reversa e aos desenvolvedores das ferramentas e bibliotecas de análise subjacentes que tornam este framework possível.
| Ferramenta | Status | Previsão | Notas |
|---|
| API Direta | Estável | Disponível Agora | Abordagem recomendada |
| Plugin Ghidra | Em Andamento | Outubro de 2025 | Funcionalidade básica disponível |
| Plugin IDA Pro | Em Desenvolvimento | Novembro de 2025 | Em andamento - não funcional |
| Plugin Binary Ninja | Em Desenvolvimento | Novembro de 2025 | Em andamento - não funcional |