Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Grundlagen

Code Schützen - Projektschutz

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --

Code Schützen - Projektschutz

Sie möchten Ihren entwickelten Code vor den Augen anderer schützen, bzw. vermeiden, dass andere diesen ändern?

Dazu gibt es eine gute und eine schlechte Nachricht. Welche wollen Sie zuerst lesen?
Nehmen wir die Gute zuerst, lesen Sie später aber unbedingt die Schlechte!

Schutz einrichten

Wenn Sie in Ihrem VBA Projekt sind in der Entwicklungsumgebung, können Sie über das Menü Extras und dort Eigenschaften von VBA - Projekt einen Dialog aufrufen.
Dieser hat zwei Register, uns interessiert hier das Register Schutz.

In diesem Register haben Sie die Möglichkeit Projekt für Anzeige sperren anzuhaken, tun Sie dies.

Nun müssen Sie noch ein Passwort vergeben. Schreiben Sie sich dieses auf!

Beachten Sie, dass dieses Passwort von der Großkleinschreibung abhängig ist.
Sie müssen dieses Passwort zweimal eingeben.

Nachdem Sie dies getan haben, klicken Sie auf OK.
Speichern Sie nun die Mappe und schließen Sie diese.
Öffnen Sie diese und versuchen Sie nun Ihr Projekt in der VBA Umgebung zu öffnen.
Sie werden sehen, dass Sie nun Ihr Passwort eingeben müssen, um an Ihr VBA Projekt zu kommen.

Ein Schutz der nicht wirklich einer ist.

Und wie Sie richtig erahnen, kommt nun die schlechte Nachricht.
Tatsächlich lässt sich dieser Schutz für den Eingeweihten recht leicht aushebeln.
(Nein, ich werde hier nicht erzählen wie das geht!)

Aber es soll Ihnen bewusst sein, dass Sie Ihr Projekt so nicht wirklich schützen können.

Trotzdem ist dieser Schutz besser als keiner. Sie sichern Ihn vor dem Normalanwender. Außerdem verhindern Sie unbeabsichtigtes Ändern des Codes usw...
 Peter Haserodt
  • Formelhilfe
  • Makroentwicklung
  • VBA-Programmierung
  • + + + + + + + + +
Alternativen:

Eine wirklich sichere Methode gibt es nicht. Mit genügend "kriminellem" Aufwand ist wahrscheinlich alles zu knacken.
Eine Alternative, die nicht so leicht zu dekompilieren ist, ist z.B. eine VB6 DLL in welcher man die wichtigen Funktionalitäten auslagert. (Ich persönlich halte diese Methode aber für eine der Besten)

Hierzu muss man entweder VB6 oder die Developer Version von Excel haben. Außerdem natürlich etwas weiterreichende Programmierkenntnisse obwohl dies das kleinste Problem ist.

Der Nachteil dieser Variante ist, dass dafür diese DLL auf dem System registriert werden muss und dies wird in vielen Firmen heutzutage nicht zugelassen. (Man braucht Admin-Rechte dafür)

Heute wird man aber wohl eher auf eine DotNet Lösung gehen und dort eine DLL erstellen oder ein Com ADD- IN
Eine weitere - recht komplizierte Möglichkeit, die ich schon gesehen habe, ist, die Entwicklungsumgebung durch eine .exe zu überwachen und die Arbeitsmappe mit einem Öffnenkennwort zu versehen (welches sehr viel schwerer zu knacken ist)
Diese halte ich persönlich aber für fraglich, gerade im Zeitalter von Excel 2007, in welchem das VBA Projekt isoliert in der Zip-Mappe liegt. Es wird nur eine Frage der Zeit sein, bis es hier Knackprogramme gibt, welche den Zip Zugriff auf die Mappe zulassen.
Außerdem kann man es in bestimmten Umgebungen trotzdem angreifen.

Eine weitere Methode ist über exe Dateien Funktionalitäten ausführen zu lassen.
Diese habe ich nicht getestet. Auch hier ist primär die Frage, wie das System von den Administratoren gesichert wird.
Auch braucht man auf dem System z.B. bei einer VB.exe die entsprechenden Runtime Dateien auf dem System, welche aber meistens vorhanden sind. In dieser Variante gibt es aber m.E. Geschwindigkeitsprobleme und andere Problematiken.

Eine zusätzliche Idee ist Obfuscate - was soviel wie verwirren bedeutet.
Diese Idee beruht darauf, den Code so umzugestalten, dass er schwer lesbar wird.
(Z.B. in VB.Net wird dies propagandiert)
Aber hier ist durch den Typ des Codes von VBA, der klar lesbar ist, über Haltepunkte dies sicherlich kein Problem und wahrscheinlich nicht der Mühe wert.

Es gibt sicherlich noch mehr Ideen, aber meine persönliche Überzeugung ist, dass solange Quellcode in VBA verankert ist, dieser mehr oder weniger leicht zu erreichen ist.

Weitere Artikel der Gruppe: Grundlagen Aus Excel VBA
Nach oben