
Generalisierter VMProtect-Devirtualisierer, der Versionen 1.x–3.x unterstützt. Eigenständiges CLI-Tool und Ghidra-Plugin für automatisiertes Bytecode-Decoding, Handler-Klassifizierung und Rekonstruktion von x86-64-Instruktionen aus geschützten Binärdateien.
Generalisierter VMProtect-Devirtualizer mit Unterstützung für Versionen 1.x, 2.x und 3.x. Eigenständiges CLI-Tool + Ghidra-Plugin.
Status: ✅ Produktionsbereit | Validierung: 22/22 Beispiele (100%) | Bereich: VMP ≤3.6 (3.7+ erfordert Reverse Engineering)
cd /home/ciupix/vmp_devirt_prod
cargo build --release
Binärdatei: 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
Getestete Beispiele:
Siehe VALIDATION_REPORT.md für detaillierte Ergebnisse.
Eingabe-Binärdatei
↓
PE/ELF-Lader (src/pe_loader.rs)
↓
Versionsdetektor (src/version.rs)
↓
Extraktion der Dispatch-Tabelle (src/dispatch_table.rs)
├─ Unicorn-XOR-Schlüsselerfassung (src/unicorn_emulator.rs)
└─ Musterabgleichs-Fallback
↓
Handler-Klassifizierer (src/handler_classifier.rs)
↓
Bytecode-Dekodierer (src/bytecode.rs)
├─ Operanden-Entschlüsselung (src/decrypt.rs)
└─ ALU-Rekonstruktion (src/alu.rs)
↓
Ausgabe (JSON/Pseudo-ASM)
Gesamt: ~2.800 Zeilen produktionsreifer Rust-Code
Heuristiken basierend auf:
VMP 1.x/2.x: XOR-Schlüsselextraktion mittels Musterabgleich im .text-Abschnitt
VMP 3.x: Dispatch der Handler-Kette
Musterabgleich basierend auf:
FUTURE_WORK.md für Details.VALIDATION_REPORT.md - Umfassende TestergebnisseIMPLEMENTATION_COMPLETE.md - ImplementierungsstatusUNICORN_IMPLEMENTATION_REPORT.md - Details zur XOR-SchlüsselerfassungArchitektur basierend auf der Analyse des VMP 3.5.1 Quellcode-Leaks:
Forschung/Bildungszwecke
Bei Problemen oder Fragen beachten Sie bitte die Validierungsberichte oder die Implementierungsdokumentation.
Zuletzt aktualisiert: 2026-06-01 Status: Produktionsbereit
| Version | Beispiele | Erfolg | Durchschn. Zeit |
|---|
| VMP 1.x | 4 | 4/4 | 38 ms |
| VMP 2.x | 6 | 6/6 | 734 ms |
| VMP 3.x | 12 | 12/12 | 39 ms |
| Modul | Zweck | Zeilen |
|---|
src/lib.rs | Hauptbibliotheksschnittstelle | 150 |
src/version.rs | VMP-Versionserkennung | 200 |
src/pe_loader.rs | Laden von PE/ELF-Binärdateien | 350 |
src/dispatch_table.rs | Extraktion der Dispatch-Tabelle | 400 |
src/unicorn_emulator.rs | XOR-Schlüsselerfassung | 308 |
src/handler_classifier.rs | Identifikation des Handler-Typs | 280 |
src/bytecode.rs | Bytecode lesen/dekodieren | 320 |
src/decrypt.rs | ValueCryptor-Ketten | 250 |
src/alu.rs | Rekonstruktion von ALU-Operationen | 200 |
src/opcode_table.rs | Opcode-Verwaltung | 180 |
src/bin/cli.rs | CLI-Tool | 400 |