
Entpacken und deobfuscieren Sie VMProtect 2 geschützte Binärdateien mit einem emulationsbasierten VM-Explorer, Handler-Profiler und experimentellem LLVM-Recompiler zur Devirtualisierung.
Dieses Repository ist eine Sammlung von Legacy-Tools für die Arbeit mit VMProtect 2-geschützten Binärdateien.
Diese Tools ermöglichen das Unpacking, die Analyse und die experimentelle Devirtualisierung von mit VMProtect 2 geschützter Software. Im Kern dieser Sammlung steht vmprofiler, eine Utility-Bibliothek, die die von allen anderen Tools verwendete grundlegende Logik bereitstellt. Sie ist für die Identifizierung zentraler VMProtect-2-Komponenten wie VM-Handler, die Handler-Tabelle, Transforms und mehr verantwortlich.
Die Erkenntnisse aus diesem über 4 Jahre alten Projekt sollten an diejenigen weitergegeben werden, die sich für Devirtualisierung interessieren.
Dieses Projekt versucht, einzelne VM-Handler zu identifizieren. Dieser Ansatz ist fragil, nicht skalierbar und kann durch Änderungen an der Architektur der virtuellen Maschine (Verknüpfung mehrerer Handler, komplexe Handler usw.) ausgehebelt werden. Stattdessen plädiere ich für eine inkrementelle Lifting- und Kontrollfluss-Wiederherstellungsstrategie mit minimaler VM-spezifischer Deobfuskationslogik. Tools wie Saturn, Dna by Colton, Triton und Mergen haben VMProtect erfolgreich mit wenig oder keiner VM-spezifischen Handler-Identifizierung deobfuskiert. Dieses Repository dokumentiert die Architektur von VMProtect 2 und dient als warnender Hinweis: Vermeidet den Bau von Devirtualisierungs-Tools, die stark von der Identifizierung VM-spezifischer Handler abhängen.
Ein semi-generischer Ansatz zur VMProtect-Devirtualisierung erfordert ein robustes Framework, das Load/Store-Propagation, Sektions-Konstantenpropagation, DCE und eine Handvoll weiterer einfacher Optimierungen unterstützt. Viele versuchen, LLVM zu verwenden, um zurück in nativen 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 Beratungsdiensten für Deobfuskation interessiert sind, können wir dies anbieten, sofern wir zeitlich dazu in der Lage sind.
vmemu
Ein auf der Unicorn Engine basierendes Tool zur Erkundung virtueller Maschinen.
Es ermöglicht Ihnen, geschützte Programme zu unpacken und innerhalb eines bestimmten vmenter den Kontrollfluss zu analysieren.
Dieses Tool erzeugt eine .vmp2-Datei, die den Kontrollflussgraphen des angegebenen 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 erkundet den gesamten virtualisierten Kontrollfluss.
vmdevirt
Ein experimenteller LLVM-basierter Recompiler für .vmp2-Dateien.
Obwohl funktionsfähig, gilt er als hochgradig experimentell und instabil, und dieser Ansatz wird generell nicht empfohlen.
vmassembler
Ein experimenteller Assembler zum Enkodieren benutzerdefinierter virtueller Maschinenoperationen.
Dieses Projekt demonstriert ein tiefes technisches Verständnis der Architektur der virtuellen Maschine von VMProtect 2.
vmhook
Ein Tool, das dazu entwickelt wurde, zur Laufzeit in die VMProtect-2-Virtual Machine einzuhooken und eine detaillierte Introspektion 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 verstoßen nicht gegen 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 zentrale Utility-Bibliothek, die alle anderen Tools antreibt.
Sie umfasst Pattern-Matching für VM-Handler, die Extraktion der Handler-Tabelle, Dead-Code-Eliminierung (DCE) und andere wesentliche Analyse-Routinen.
vmprofiler-cli
Eine Kommandozeilenschnittstelle für vmprofiler, die es Benutzern ermöglicht, extrahierte Informationen in Textform anzuzeigen und zu untersuchen.
vmprofiler-qt
Ein grafischer Disassembler auf Qt-Basis für VMProtect-2-Bytecode, der eine interaktive und visuelle Erkundung virtualisierten Codes ermöglicht.