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 hervorheben : Projekt 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.