
VMProtect2-Deobfuskationswerkzeuge
Dieses Repository ist eine Sammlung von Legacy-Tools für die Arbeit mit VMProtect 2-geschützten Binärdateien.
Diese Tools ermöglichen das Entpacken, die Analyse und die experimentelle Devirtualisierung von Software, die mit VMProtect 2 geschützt ist. Im Kern dieser Sammlung befindet sich vmprofiler, eine Utility-Bibliothek, die die grundlegende Logik bereitstellt, die von allen anderen Tools verwendet wird. Sie ist verantwortlich für die Identifizierung wichtiger VMProtect 2-Komponenten wie VM-Handler, die Handler-Tabelle, Transforms und mehr.
Die aus diesem über 4 Jahre alten Projekt gewonnenen Erkenntnisse sollten an diejenigen weitergegeben werden, die sich für Devirtualisierung interessieren.
Dieses Projekt versucht, einzelne VM-Handler zu identifizieren. Dieser Ansatz ist fragil, skaliert nicht und kann durch Änderungen an der virtuellen Maschinenarchitektur (Verkettung mehrerer Handler, komplexe Handler usw.) überwunden werden. Stattdessen befürworte ich eine inkrementelle Lifting- und Kontrollfluss-Wiederherstellungsstrategie mit minimaler VM-spezifischer Deobfuskationslogik. Tools wie Saturn, Dna von Colton, Triton und Mergen haben VMProtect erfolgreich deobfuskiert, mit wenig oder keiner VM-spezifischen Handler-Identifikation. Dieses Repository dokumentiert die Architektur von VMProtect 2 und dient als warnender Hinweis: Vermeiden Sie die Erstellung von Devirtualisierungs-Tools, die stark von der Identifizierung virtueller maschinenspezifischer Handler abhängen.
Ein semi-generischer Ansatz zur VMProtect-Devirtualisierung erfordert ein robustes Framework, das Load/Store-Propagation, Abschnitts-Konstanten-Propagation, DCE und einige andere einfache Optimierungen unterstützt. Viele versuchen, LLVM zu verwenden, um zurück zu nativem Code zu kompilieren; ich glaube jedoch, dass dieser Ansatz immer zu weniger als wünschenswerten Ergebnissen führen wird. Wir haben unser eigenes Framework, blare2, das saubere 1:1-Lift- und Lowering-Fähigkeiten bietet, die wir für unsere Deobfuskationszwecke nutzen. Wenn Sie an Consulting-Dienstleistungen für Deobfuskation interessiert sind, können wir dies anbieten, sofern wir zeitlich dazu in der Lage sind.
vmemu
Ein auf Unicorn Engine basierendes Tool zur Erkundung virtueller Maschinen.
Es ermöglicht Ihnen, geschützte Programme zu entpacken und Kontrollflüsse innerhalb einer bestimmten vmenter zu analysieren.
Dieses Tool generiert eine .vmp2-Datei, die den Kontrollflussgraphen des gegebenen VM-Eintrags enthält.
Die resultierende .vmp2-Datei kann dann an vmdevirt übergeben werden, um die Funktion zurück in nativen x86-Code zu rekompilieren und wieder in die ursprüngliche Binärdatei zu integrieren. Bitte beachten Sie, dass dies KEIN einfacher Tracer ist, der nur einen einzigen Pfad durch eine Funktion entdeckt – es identifiziert tatsächlich virtuelle JCCs und untersucht den gesamten virtualisierten Kontrollfluss.
vmdevirt
Ein experimenteller, auf LLVM basierender Rekompiler für .vmp2-Dateien.
Obwohl funktionsfähig, gilt er als hochgradig experimentell und instabil, und dieser Ansatz wird allgemein nicht empfohlen.
vmassembler
Ein experimenteller Assembler zum Codieren benutzerdefinierter virtueller Maschinenoperationen.
Dieses Projekt demonstriert ein tiefes technisches Verständnis der VMProtect 2-Virtuellen-Maschinen-Architektur.
vmhook
Ein Tool, das entwickelt wurde, um zur Laufzeit in die VMProtect 2-VM einzuhooken und eine detaillierte Untersuchung zu ermöglichen.
Bitte folgen Sie den Anweisungen auf dieser Seite.
vmhookKonfiguration für vmassembler, vmemu, vmprofiler und vmprofiler-cli:
cmake -B build
cmake --build build
Mit vmdevirt (lädt LLVM herunter und baut es!):
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Mit vmprofiler-qt:
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
Beide optionalen Module:
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Diese Tools werden ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Sie dürfen nicht für illegale Aktivitäten, unbefugten Zugriff oder Verstöße gegen den DMCA oder andere Gesetze verwendet werden. Die Tools selbst verletzen keine DMCA-Bestimmungen. Die gesamte Arbeit ist meine eigene Schöpfung, und alle Handlungen, die von Benutzern dieser Tools vorgenommen werden, liegen in der alleinigen Verantwortung dieser Benutzer und spiegeln nicht die Handlungen oder Absichten des Autors wider.
vmprofiler
Die Kern-Utility-Bibliothek, die alle anderen Tools antreibt.
Sie enthält VM-Handler-Musterabgleich, Extraktion der Handler-Tabelle, Dead Code Elimination (DCE) und andere wesentliche Analyseroutinen.
vmprofiler-cli
Eine Kommandozeilen-Schnittstelle für vmprofiler, die es Benutzern ermöglicht, extrahierte Informationen in Textform anzuzeigen und zu untersuchen.
vmprofiler-qt
Ein Qt-basierter grafischer Disassembler für VMProtect 2-Bytecode, der eine interaktive und visuelle Erkundung virtualisierten Codes ermöglicht.