VBA-Projektschutz in MS Excel

Hallo! Ich bin ein normaler MS Excel-Benutzer. Kein professioneller Programmierer, hat aber genug Erfahrung gesammelt, um den Schutz von VBA-Projekten zu installieren und zu umgehen.



Haftungsausschluss:



Dieser Artikel beschreibt die Arten des Schutzes von VBA-Projekten vor unbefugtem Zugriff. Ihre Stärken und Schwächen rangieren.



Der Artikel soll die Stärken und Schwächen der einzelnen Schutzarten für ein VBA-Projekt in MS Office aufzeigen.



Demonstration der entwickelten Tools im Macro Tools VBA- Add-On zum Entfernen und Installieren des einen oder anderen Schutzes. 



Alle Tools werden mit Standard-VBA-Tools implementiert, ohne zusätzliche Bibliotheken zu verwenden. 





Hauptfenster Add-Ins Makro-Tools VBA



Die erste Art des Schutzes - Normales Passwort



Zeit zum Entfernen: sofort



Nachteil: Schneller Zugriff auf das kennwortgeschützte VBA-Modul



Standardtool (Im Bereich VBE: Tools -> VBAProject-Eigenschaften -> Schutz ). 



Der am einfachsten entfernbare Schutz. Es ist einfach, im Internet einen Code zu finden, um diesen Schutz zu entfernen. 



Dieser Schutz kann mit folgendem Werkzeug entfernt werden:





Die zweite Art des Schutzes - Projekt ist nicht sichtbar



Zeit zum Entfernen: 10 bis 15 Minuten (manuell)



Nachteil: Zugriff auf den Quellcode des VBA-Moduls



Eine der häufigsten Schutzarten. Gefunden in 95% der Dateien mit VBA-Modulschutz. Wenn Sie versuchen, ein Projekt zu öffnen, wird ein Dialogfeld mit der Meldung geöffnet:  Projekt ist nicht sichtbar.





Die meisten Excel-Benutzer können diesen Schutz nicht entfernen, da er viele Variationen und Nuancen aufweist. Um ihn zu entfernen, müssen Sie eine Vorstellung von der internen Struktur der Excel-Datei haben.



Diese Art des Schutzes basiert auf dem Ändern von Schlüsseln:



CMG=«4A488FCC54D054D054D054D0»

DPB=«0B09CE0F8E108E108E»

GC=«CCCE09520B120C120CED»




in der Datei vbaProject.bin





Kurz, wie dieser Schutz erstellt wird



Um diesen Schutz zu erstellen, müssen Sie die Excel-Datei entpacken. Gehen Sie zum xl- Ordner im Archiv , öffnen Sie die Datei vbaProject.bin , am Ende der Datei befinden sich unsere Schlüssel, bearbeiten Sie die Schlüsselwerte, um sie zu leeren, speichern Sie die Datei. Wir übersetzen unser Archiv wieder in eine Excel-Datei. Erledigt! 



Dies ist die einfachste Version dieses Schutzes, es gibt jedoch viele Änderungen.



Algorithmus zum Entfernen des Schutzes Projekt ist nicht sichtbar.



1) Entpacken Sie die experimentelle Datei und gehen Sie zur Datei  ... \ xl \ _rels \ workbook.xml.rels









2) In der Datei workbook.xml.rels   suchen wir nach einer Zeile, die das Wort  vbaProject enthält . Normalerweise sieht es so aus:  /> . In dieser Zeile interessieren uns der Zielschlüssel und sein Wert. Der Wert ist der Name der Datei, die das VBA-Projekt enthält. Manchmal ändert der Protector die Schlüsselwerte in driverSettings.bin. Es stellt sich heraus, dass die Datei mit dem VBA-Projekt als eine andere Datei getarnt ist.



3) Öffnen Sie die Datei in der angegebenen Zielschlüssel für die Bearbeitung , sucht die CMG, DPB, GC Schlüssel in der Datei  . Und wir ändern jeden Buchstaben in ihrem Namen in einen anderen, zum Beispiel: CMC, DPC, CC... Bei der Suche müssen Sie vorsichtig sein, da der Verteidiger ein Formular mit einer Signatur, die einen der Schlüssel wiederholt, in das Projekt einfügen kann , zum Beispiel: DPB = "0B09CE0F8E108E108E" . Wenn Sie es ändern, wird das VBA-Projekt aus der Excel-Arbeitsmappe entfernt. Wir speichern und schließen die Datei.



4) Wir übersetzen das Archiv zurück in eine Excel-Datei.



5) Starten Sie die Excel-Anwendung wie folgt: Im Trust Center -> Makrooptionen -> Alle Makros ohne Benachrichtigung deaktivieren . Starten Sie Excel neu. Diese Operation wird benötigt, um den Schutz zu blockieren, der manchmal von den Autoren von Makros festgelegt wird. Dieser Schutz wird wie folgt implementiert. Im VBA-Modul " ThisBook”, Es werden Prozeduren erstellt, die auf die Ereignisse beim Öffnen oder Schließen eines Buches reagieren. Diese Ereignisse prüfen normalerweise, ob ein Kennwort für ein VBA-Projekt vorhanden ist, ob das Speichern verboten ist usw.



6) Öffnen Sie die Datei. Wenn alles richtig gemacht wurde, schwört Excel auf die falschen Tasten, die wir in Absatz 3 bearbeitet haben. Klicken Sie auf Ja, bis diese Meldungen beendet sind und das Dialogfeld geschlossen wird. 



      Wenn diese Meldung nicht angezeigt wird, haben Sie die Datei mit dem VBA-Projekt nicht bearbeitet.





7) Öffnen Sie das VBA-Projekt. Schließlich sollte das VBA-Projekt verfügbar sein.



8) Aber manchmal wird der Schutz nicht entfernt, dann müssen Sie die Datei speichern, überprüfen Sie, ob sie wirklich gespeichert wurde! Und wieder getan Schritte 1 bis 7. Normalerweise ist dies geschieht , wenn die Datei workbook.xml.rels im Schlüssel Ziel   gesetzt printerSettings.bin .Wenn Erhaltung, korrigiert Excel es auf einen Wert bei vbaProject.bin



kann dieser Schutz installieren und entfernen Sie das Werkzeug folgt:





Die dritte Art des Schutzes - Verstecktes Modul, versteckte VBA-Module



Zeit zum Entfernen: 15 bis 20 Minuten (Sie benötigen einen OLE-Objekteditor, z. B. Structured Storage Viewer.



Nachteil: Zugriff auf den VBA-Modulcode



In Kombination mit dem Projektschutz wird normalerweise eine seltenere Art des Schutzes gefunden ist nicht sichtbar. Wenn dieser Schutz installiert ist, wird das VBA-Modul nicht im Excel-Arbeitsmappenprojekt angezeigt. Sie können seine Existenz herausfinden, indem Sie den VBA-Code analysieren (was Zeit kostet !) oder die Excel-Datei in OpenOffice oder LibreOffice öffnen  (Sie können den Code auch beim Schutz von Project beobachten Nicht sichtbar, aber diese Methode bietet keine Möglichkeit, eine Arbeitsdatei ohne Kennwort abzurufen. 





VBA-Code in  LibreOffice anzeigen



Kurz, wie dieser Schutz erstellt wird



Um diesen Schutz zu erstellen, müssen Sie die Datei je nach den Einstellungen in der Datei ... \ xl \ _rels \ workbook.xml.rels mit dem VBA-Projekt vbaProject.bin  oder printerSettings.bin bearbeiten . Am Ende der Datei werden Zeilen wie: Modul1 = 32, 32, 635, 330, Z gelöscht . Mit den gewünschten Modulnamen.





Um diesen Schutz zu entfernen, müssen Sie gelöschte Moduldatensätze in der Datei vbaProject.bin wiederherstellen.



Dieser Schutz kann mit dem folgenden Werkzeug eingestellt werden.





Die vierte Art des Schutzes - Code-Verschleierung



Zeit zum Zurückziehen: unbekannt, hängt von der Größe des Codes und der Wiederverwendung von Teilen des Codes ab









Verschleierter VBA-Code Nachteil: Die Notwendigkeit, die Datei nach der Verschleierung auf ihre Funktionsfähigkeit zu testen.



Eine äußerst seltene Art des Schutzes, der darauf basiert, den VBA-Quellcode in eine für Menschen unlesbare Form zu ändern. Alle Kommentare, Code-Formatierungen werden entfernt, die Namen aller Variablen, Prozeduren, Funktionen, Module und anderer werden umbenannt. Ein Angreifer wird niemals in der Lage sein, die ursprüngliche Form des Codes wiederherzustellen, und es wird viel Zeit in Anspruch nehmen, ihn in einer für Menschen lesbaren Form wiederherzustellen.  



Um den Code zu verschleiern, benötigen Sie Zeit und spezielle Software.



Dieser Schutz kann mit dem folgenden Werkzeug eingestellt werden.





Die fünfte Art des Schutzes - Portierungscode zur DLL



Zeit zum Entfernen: unbekannt, abhängig von der Programmiersprache und den Qualifikationen



Nachteil: Notwendigkeit einer zusätzlichen DLL-Datei



Eine der seltensten Arten des Schutzes. Die Hauptidee besteht darin, den Hauptcode in eine separate DLL zu übertragen, die in einer anderen Programmiersprache geschrieben ist. Diese Art des Schutzes ist aus folgendem Grund nicht weit verbreitet: Die Notwendigkeit einer Excel-Datei, "Ziehen" einer zusätzlichen Datei, DLL.



Um auf den DLL-Code zugreifen zu können, benötigen Sie spezielle Kenntnisse.



Fazit



Abschließend möchte ich die Nutzlosigkeit von Schutzmaßnahmen hervorhebenProjekt ist nicht sichtbar und verstecktes Modul, das im Wesentlichen nichts schützt. Ermöglicht das Anzeigen von VBA-Code, ohne die Quelldatei in Programmen wie OpenOffice  oder   LibreOffice zu ändern. So werden sie problemlos entfernt.



All Articles