
Многофункциональный фреймворк для распаковки и анализа бинарных файлов, защищённых виртуальными машинами, использующий динамическое отслеживание меток, символьное выполнение, классификацию шаблонов и приоритизацию на основе машинного обучения для автоматизации обратной разработки коммерческих и пользовательских протекторов.
Проект будет опубликован к середине октября. Рефакторинг в процессе.
Продвинутая платформа для обнаружения и анализа виртуальных машин
VMDragonSlayer — это комплексная платформа для анализа бинарных файлов, защищённых протекторами на основе виртуальных машин (VM), такими как VMProtect 2.x/3.x, Themida и пользовательскими вредоносными VM. Платформа объединяет несколько аналитических движков, включая динамическое отслеживание меток (DTT), символьное выполнение (SE), классификацию шаблонов и машинное обучение, чтобы автоматизировать процесс обратной разработки.
Цель: Превратить сложный анализ защищённых бинарных файлов, занимающий недели/месяцы ручной работы, в структурированный, автоматизированный анализ с объяснимыми результатами.
| Область | Движок / Модуль | Основные возможности |
|---|---|---|
| Обнаружение VM | analysis.vm_discovery | Идентификация диспетчера и таблицы обработчиков, эвристика вложенных VM |
| Анализ шаблонов | analysis.pattern_analysis | На основе правил + по сходству + ML (гибридный авто-выбор) |
| Отслеживание меток | analysis.taint_tracking | Отслеживание меток на уровне байтов через Intel Pin, обнаружение обработчиков, уверенность потока |
| Символьное выполнение | analysis.symbolic_execution.executor | Исследование с весами PathPrioritizer (ML), отслеживание ограничений и состояний |
| Гибридная оркестровка | (ядро Python) | Последовательные / параллельные / адаптивные рабочие процессы (отчёт Ghidra указывает на реализацию) |
| Синтетические данные | data/training/synthetic_sample_generator.py | Мутации обфускации, генерация образцов для нескольких архитектур |
| База шаблонов | data/patterns/ | JSON + расширенная БД + шаблоны времени выполнения на основе SQLite |
| Плагин Ghidra | plugins/ghidra/ | В разработке UI-интеграция (несколько шаблонов отсутствуют) |
| Схемы / Валидация | data/schemas/ | Выходные данные анализа и форматы шаблонов, проверенные по JSON-схеме |
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]
dragonslayer.analysis.vm_discovery)dragonslayer.analysis.taint_tracking)dragonslayer.analysis.pattern_analysis)dragonslayer.analysis.symbolic_execution)dragonslayer.ml)VMDragonSlayer/
├── dragonslayer/ # Главный пакет Python
│ ├── analysis/ # Аналитические движки
│ │ ├── vm_discovery/ # Обнаружение и классификация VM
│ │ ├── pattern_analysis/ # Сопоставление шаблонов и ML-классификация
│ │ ├── symbolic_execution/ # Движок символьного выполнения
│ │ ├── taint_tracking/ # Динамический анализ меток
│ │ └── anti_evasion/ # Контрмеры против антианализа
│ ├── api/ # REST API сервер и клиент
│ ├── core/ # Базовые компоненты платформы
│ ├── ml/ # Конвейер машинного обучения
│ ├── analytics/ # Отчётность и метрики анализа
│ ├── gpu/ # Поддержка ускорения на GPU
│ ├── utils/ # Вспомогательные функции
├── data/ # Файлы конфигурации и данных
│ ├── patterns/ # База шаблонов
│ ├── models/ # ML-модели и метаданные
│ │ ├── pretrained/ # Предобученные модели (PoC)
│ │ └── metadata/ # Метаданные моделей и схемы
│ ├── samples/ # Примеры файлов и реестры
│ ├── schemas/ # JSON-схемы для валидации
│ └── training/ # Конфигурации обучения
├── plugins/ # Плагины для инструментов обратной разработки
│ ├── ghidra/ # Плагин Ghidra (Java/Gradle)
│ ├── idapro/ # Плагин IDA Pro (Python)
│ └── binaryninja/ # Плагин Binary Ninja (Python)
├── tests/ # Набор тестов
├── documentation/ # Документация
└── LICENSE # Лицензия GPL v3
VMDragonSlayer интегрируется с основными инструментами обратной разработки:
Примечание: Включённые ML-модели — это базовые концептуальные реализации, предназначенные для исследовательских и образовательных целей.
# Теперь работает отлично:
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 обнаружена: {vmd.get('vm_detected', False)}")
print(f"Найдено обработчиков: {len(vmd.get('handlers_found', []))}")
# 1. Установка со всеми зависимостями
pip install -r requirements.txt
pip install -e .
# Клонирование репозитория
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# ОБНОВЛЁННАЯ УСТАНОВКА
# Установка всех необходимых зависимостей, включая z3-solver
pip install -r requirements.txt
# Установка платформы в режиме разработки
pip install -e .
# Установка только с CPU (базовая функциональность)
pip install -r requirements.txt
pip install -e .
# NVIDIA GPU с CUDA 12.x (серии RTX 30xx/40xx)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -e .
# NVIDIA GPU с CUDA 11.8 (старые 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 .
Выберите предпочитаемый дизассемблер:
cd plugins/ghidra
./build.bat # Windows
# или
./build.sh # Linux/macOS
# Установка в Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# Инициализация оркестратора (автоматически загружает конфигурацию по умолчанию)
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: {vmd.get('vm_detected', False)}")
print(f"Количество обработчиков: {len(vmd.get('handlers_found', []))}")
print(f"Успех анализа: {result.get('success', False)}")
VMDragonSlayer использует модульную архитектуру с несколькими аналитическими движками:
Платформа включает несколько концептуальных моделей:
# Базовая конфигурация
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
}
})
# Инициализация конкретных движков
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")
Мы приветствуем вклад! См.:
Этот проект лицензирован на условиях GNU General Public License v3.0. Подробности см. в LICENSE.
Если вы используете VMDragonSlayer в своих исследованиях, пожалуйста, цитируйте:
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
Особая благодарность сообществу обратной разработки и разработчикам базовых инструментов и библиотек анализа, которые сделали возможным создание этой платформы.
| Инструмент | Статус | Ожидаемая дата | Примечания |
|---|
| Прямой API | Стабилен | Доступен сейчас | Рекомендуемый подход |
| Плагин Ghidra | В процессе | Октябрь 2025 | Базовая функциональность доступна |
| Плагин IDA Pro | В разработке | Ноябрь 2025 | В процессе — не функционален |
| Плагин Binary Ninja | В разработке | Ноябрь 2025 | В процессе — не функционален |