
Универсальный девиртуализатор VMProtect с поддержкой версий 1.x, 2.x и 3.x. Автономный CLI-инструмент + плагин для Ghidra.
Статус: ✅ Готов к продакшену | Валидация: 22/22 образцов (100%) | Охват: VMP ≤3.6 (для 3.7+ требуется реверс-инжиниринг)
cd /home/ciupix/vmp_devirt_prod
cargo build --release
Бинарник: target/release/vmp_devirt
# Analyze binary
./target/release/vmp_devirt <binary_path>
# Export handlers
./target/release/vmp_devirt <binary_path> --export-handlers handlers.json
# Export bytecode
./target/release/vmp_devirt <binary_path> --export-bytecode bytecode.json
Протестированные образцы:
Подробные результаты см. в VALIDATION_REPORT.md.
Input Binary
↓
PE/ELF Loader (src/pe_loader.rs)
↓
Version Detector (src/version.rs)
↓
Dispatch Table Extractor (src/dispatch_table.rs)
├─ Unicorn XOR Key Capture (src/unicorn_emulator.rs)
└─ Pattern Matching Fallback
↓
Handler Classifier (src/handler_classifier.rs)
↓
Bytecode Decoder (src/bytecode.rs)
├─ Operand Decryption (src/decrypt.rs)
└─ ALU Reconstruction (src/alu.rs)
↓
Output (JSON/Pseudo-asm)
Итого: ~2800 строк производственного кода на Rust
Эвристики на основе:
VMP 1.x/2.x: извлечение XOR-ключей сопоставлением с образцом в секции .text
VMP 3.x: диспетчеризация через цепочки хэндлеров
Сопоставление с образцом по:
FUTURE_WORK.md.VALIDATION_REPORT.md — полные результаты тестированияIMPLEMENTATION_COMPLETE.md — статус реализацииUNICORN_IMPLEMENTATION_REPORT.md — детали перехвата XOR-ключейАрхитектура основана на анализе утечки исходного кода VMP 3.5.1:
Использование в исследовательских/образовательных целях
По вопросам и проблемам обращайтесь к отчётам о валидации или документации по реализации.
Последнее обновление: 2026-06-01 Статус: Готов к продакшену
| Version |
|---|
| Samples |
|---|
| Success |
|---|
| Avg Time |
|---|
| VMP 1.x | 4 | 4/4 | 38ms |
| VMP 2.x | 6 | 6/6 | 734ms |
| VMP 3.x | 12 | 12/12 | 39ms |
| Module | Purpose | Lines |
|---|
src/lib.rs | Основной интерфейс библиотеки | 150 |
src/version.rs | Определение версии VMP | 200 |
src/pe_loader.rs | Загрузка PE/ELF-бинарников | 350 |
src/dispatch_table.rs | Извлечение таблицы диспетчеризации | 400 |
src/unicorn_emulator.rs | Перехват XOR-ключей | 308 |
src/handler_classifier.rs | Определение типов хэндлеров | 280 |
src/bytecode.rs | Чтение и декодирование байткода | 320 |
src/decrypt.rs | Цепочки ValueCryptor | 250 |
src/alu.rs | Восстановление ALU-операций | 200 |
src/opcode_table.rs | Управление опкодами | 180 |
src/bin/cli.rs | CLI-инструмент | 400 |