
VMProtect2 Deobfuscation Tooling
Ce dépôt est une collection d'outils hérités pour travailler avec des binaires protégés par VMProtect 2.
Ces outils permettent le dépaquetage, l'analyse et la dévirtualisation expérimentale de logiciels protégés par VMProtect 2. Au cœur de cette collection se trouve vmprofiler, une bibliothèque utilitaire qui fournit la logique fondamentale utilisée par tous les autres outils. Elle est responsable de l'identification des composants clés de VMProtect 2 tels que les handlers VM, la table des handlers, les transformations, etc.
Les leçons tirées de ce projet vieux de plus de 4 ans devraient être transmises à ceux qui s'intéressent à la dévirtualisation.
Ce projet tente d'identifier des handlers VM individuels. Cette approche est fragile, ne passe pas à l'échelle et peut être contrecarrée par des modifications de l'architecture de la machine virtuelle (interconnexion de plusieurs handlers, handlers complexes, etc.). Au lieu de cela, je préconise une stratégie de remontée incrémentale et de reconstruction du flot de contrôle avec une logique minimale de désobfuscation spécifique à la VM. Des outils comme Saturn, Dna by Colton, Triton et Mergen ont désobfusqué VMProtect avec peu ou pas d'identification de handlers spécifiques à la VM. Ce dépôt documente l'architecture de VMProtect 2 et sert d'avertissement : évitez de construire des outils de dévirtualisation qui dépendent fortement de l'identification de handlers spécifiques à la machine virtuelle.
Une approche semi-générique de la dévirtualisation de VMProtect nécessite un framework robuste qui prend en charge la propagation load/store, la propagation de constantes de section, l'élimination de code mort (DCE) et quelques autres optimisations simples. Beaucoup de gens tentent d'utiliser LLVM pour compiler de nouveau en natif ; cependant, je crois que cette approche donnera toujours des résultats moins que souhaitables. Nous avons notre propre framework, blare2, qui offre des capacités de remontée et d'abaissement 1:1 propres que nous exploitons à des fins de désobfuscation. Si vous êtes intéressé par des services de conseil en désobfuscation, c'est quelque chose que nous pouvons fournir si notre emploi du temps le permet.
vmemu
Un outil d'exploration de machine virtuelle basé sur Unicorn Engine.
Il permet de dépaqueter des programmes protégés et d'analyser le flot de contrôle dans un vmenter spécifié.
Cet outil génère un fichier .vmp2 contenant le graphe de flot de contrôle de l'entrée VM donnée.
Le fichier .vmp2 résultant peut ensuite être passé à vmdevirt pour recompiler la fonction en x86 natif et la réintégrer dans le binaire d'origine. Veuillez noter que ce n'est PAS un simple traceur qui ne découvrirait qu'un seul chemin à travers une fonction, il identifie en fait les jccs virtuels et explorera tout le flot de contrôle virtualisé.
vmdevirt
Un recompilateur expérimental basé sur LLVM pour les fichiers .vmp2.
Bien que fonctionnel, il est considéré comme hautement expérimental et instable, et cette approche est généralement déconseillée.
vmassembler
Un assembleur expérimental pour encoder des opérations de machine virtuelle définies par l'utilisateur.
Ce projet démontre une compréhension technique approfondie de l'architecture de la machine virtuelle VMProtect 2.
vmhook
Un outil conçu pour intercepter la machine virtuelle VMProtect 2 à l'exécution, permettant une introspection détaillée des .
Veuillez suivre les instructions sur cette page.
vmhookConfiguration pour vmassembler, vmemu, vmprofiler et vmprofiler-cli :
cmake -B build
cmake --build build
Avec vmdevirt (téléchargera et compilera LLVM !) :
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Avec vmprofiler-qt :
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
Les deux modules optionnels :
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Ces outils sont fournis uniquement à des fins éducatives et de recherche. Ils ne doivent pas être utilisés pour des activités illégales, des accès non autorisés ou des violations du DMCA ou d'autres lois. Les outils eux-mêmes ne violent aucune réglementation DMCA. Tout le travail est ma création originale, et toute action entreprise par les utilisateurs de ces outils est de la seule responsabilité de ces utilisateurs et ne reflète pas les actions ou les intentions de l'auteur.
vmprofiler
La bibliothèque utilitaire centrale qui alimente tous les autres outils.
Elle inclut la correspondance de motifs de handlers VM, l'extraction de la table des handlers, l'élimination de code mort (DCE) et d'autres routines d'analyse essentielles.
vmprofiler-cli
Une interface en ligne de commande pour vmprofiler, permettant aux utilisateurs d'afficher et d'inspecter les informations extraites dans un format textuel.
vmprofiler-qt
Un désassembleur graphique basé sur Qt pour le bytecode VMProtect 2, offrant une exploration interactive et visuelle du code virtualisé.