Clause de non-responsabilité:
cet article décrit les types de protection des projets VBA contre les accès non autorisés. Leurs forces et leurs faiblesses sont classées.
Le but de l'article est de montrer les forces et les faiblesses de chaque type de protection pour un projet VBA dans MS Office.
Démonstration des outils développés, dans l'add-on Macro Tools VBA , pour supprimer et installer l'une ou l'autre protection.
Tous les outils sont implémentés à l'aide d'outils VBA standard, sans utiliser de bibliothèques supplémentaires.
Panneau principal Add-ins Macro Tools VBA
Le premier type de protection - Mot de passe régulier
Temps de suppression: instantanément
Inconvénient: accès rapide au module VBA protégé par mot de passe
Outil standard (Dans VBE: panneau Outils -> Propriétés VBAProject -> Protection ).
La protection la plus facilement amovible. Il est facile de trouver un code sur Internet pour supprimer cette protection.
Cette protection peut être supprimée avec l'outil suivant:
Le deuxième type de protection - Le projet est illisible
Temps de suppression: 10 à 15 minutes (manuellement)
Inconvénient: accès au code source du module VBA
Un des types de protection les plus courants. Trouvé dans 95% des fichiers avec la protection du module VBA. Lorsque vous essayez d'ouvrir un projet, une boîte de dialogue s'ouvre avec le message: Le projet est non visualisable.
La plupart des utilisateurs d'Excel ne peuvent pas supprimer cette protection, car elle comporte de nombreuses variantes et nuances; pour la supprimer, vous devez avoir une idée de la structure interne du fichier Excel.
Ce type de protection repose sur le changement de clé:
CMG=«4A488FCC54D054D054D054D0»
DPB=«0B09CE0F8E108E108E»
GC=«CCCE09520B120C120CED»
dans le fichier
vbaProject.bin
.
En bref, comment cette protection est créée
Pour créer cette protection, vous devez décompresser le fichier Excel. Allez dans le dossier xl dans l'archive , ouvrez le fichier vbaProject.bin , à la fin du fichier se trouvent nos clés, modifiez les valeurs de clé pour vider, enregistrez le fichier. Nous traduisons nos archives dans un fichier Excel. Terminé!
Il s'agit de la version la plus simple de cette protection, mais il existe de nombreuses modifications.
L'algorithme de suppression du projet de protection est illisible.
1) Décompressez le fichier expérimental, allez dans le fichier ... \ xl \ _rels \ workbook.xml.rels
2) Dans le fichier workbook.xml.rels , nous recherchons une ligne contenant le mot vbaProject , généralement il ressemble à ceci: /> . Dans cette ligne, nous nous intéressons à la clé Target et à sa valeur. La valeur est le nom du fichier qui contient le projet VBA. Parfois, le protecteur change les valeurs de clé en printerSettings.bin. Il s'avère que le fichier avec le projet VBA est déguisé en un autre fichier.
3) Ouvrez le fichier spécifié dans la clé cible pour le modifier , recherchez les clés CMG, DPB, GC dans le fichier . Et nous changeons toute lettre de leur nom en une autre, par exemple: CMC, DPC, CC... Lors de la recherche, vous devez être prudent, car le défenseur peut mettre dans le projet un formulaire avec une signature répétant l'une des clés, par exemple: DPB = "0B09CE0F8E108E108E" . Lorsque vous le modifiez, le projet VBA sera supprimé du classeur Excel. Nous sauvegardons et fermons le fichier.
4) Nous traduisons l'archive dans un fichier Excel.
5) Lancez l'application Excel, procédez comme suit: dans le Centre de gestion de la confidentialité -> Options des macros -> Désactivez toutes les macros sans notification . Redémarrez Excel. Cette opération est nécessaire pour bloquer la protection, qui est parfois définie par les auteurs de macros. Cette protection est mise en œuvre comme suit. Dans le module VBA " ThisBook”, Des procédures sont créées pour répondre aux événements d'ouverture ou de fermeture d'un livre. Ces événements vérifient généralement la présence d'un mot de passe pour un projet VBA, une interdiction d'enregistrement, etc.
6) Ouvrez le fichier. Si tout est fait correctement, Excel jurera sur les mauvaises clés que nous avons modifiées au paragraphe 3. Cliquez, oui, jusqu'à ce que ces messages soient terminés et que la boîte de dialogue se ferme.
Si ce message n'apparaît pas, c'est que vous n'avez pas modifié le fichier contenant le projet VBA.
7) Ouvrez le projet VBA. Après tout, le projet VBA devrait être disponible.
8) Mais parfois, la protection n'est pas supprimée, vous devez alors enregistrer le fichier, vérifier qu'il a bien été enregistré! Et recommencez les étapes 1 à 7. Habituellement, cela se produit lorsque le fichier workbook.xml.rels dans la clé Target set printerSettings.bin .Si la conservation, Excel le corrige à une valeur à vbaProject.bin
Cette protection peut installer et supprimer l'outil suit:
Le troisième type de protection - Module caché, modules VBA cachés
Temps de suppression: 15 à 20 minutes (vous avez besoin d'un éditeur d'objets OLE, Structured Storage Viewer, par exemple.
Inconvénient: accès au code du module VBA
Un type de protection moins courant se trouve généralement en combinaison avec la protection de projet est illisible. Lorsque cette protection est installée, le module VBA n'est pas affiché dans le projet du classeur Excel. Vous pouvez découvrir son existence en analysant le code VBA (ce qui prend du temps!) ou en ouvrant le fichier Excel dans OpenOffice ou LibreOffice (vous pouvez également regarder le code lorsque vous protégez Project est Non visualisable, mais cette méthode ne permet pas d'obtenir un fichier de travail, sans mot de passe).
Afficher le code VBA dans LibreOffice
En bref, comment cette protection est créée
Pour créer cette protection, vous devez éditer le fichier avec le projet VBA - vbaProject.bin ou printerSettings.bin , selon les paramètres du fichier ... \ xl \ _rels \ workbook.xml.rels . À la fin du fichier, les lignes comme: Module1 = 32, 32, 635, 330, Z sont supprimées . Avec les noms de modules souhaités.
Pour supprimer cette protection, vous devez restaurer les enregistrements de module supprimés dans le fichier vbaProject.bin .
Cette protection peut être définie avec l'outil suivant.
Le quatrième type de protection - l'obscurcissement du code
Temps de retrait: inconnu, dépend de la taille du code et de la réutilisation de parties du code
Code VBA
obscurci Inconvénient: la nécessité de tester le fichier après l'obfuscation pour son opérabilité
Un type de protection extrêmement rare basé sur la modification du code source VBA en une forme illisible pour les humains. Tous les commentaires, le formatage du code sont supprimés, les noms de toutes les variables, procédures, fonctions, modules et autres sont renommés. Un attaquant ne sera jamais en mesure de restaurer la forme originale du code, et il faudra beaucoup de temps pour le restaurer sous une forme lisible par l'homme.
Pour désobscurcir le code, vous avez besoin de temps, de logiciels spécialisés.
Cette protection peut être définie avec l'outil suivant.
Le cinquième type de protection - Portage du code vers dll
Temps de suppression: inconnu, dépend du langage de programmation et des qualifications
Inconvénient: la nécessité d'un fichier dll supplémentaire
Un des types de protection les plus rares. L'idée principale est de transférer le code principal dans une DLL séparée, écrite dans n'importe quel autre langage de programmation. Ce type de protection n'est pas répandu pour la raison suivante, la nécessité d'un fichier Excel, "faites glisser" un fichier supplémentaire, dll.
Pour accéder au code dll, vous devez avoir des connaissances particulières.
Conclusion
En conclusion, je tiens à souligner l'inutilité des protections: Project est un module invisible et caché qui, par essence, ne protège rien. Vous permet d'afficher le code VBA sans modifier le fichier source dans des programmes tels que OpenOffice ou LibreOffice. Ils sont donc supprimés sans aucun problème.