Joshua Behrens - Wie schütze ich mein .Net-Projekt vor dem Auslesen?

Wie schütze ich mein Projekt vor dem Auslesen ?

letztes Update: (03.05.2011)

Ich stelle euch heute vor, wie man am besten ein .Net-Projekt schützt, da im VB-paradise oft danach gefragt wurde, wie das denn geht. Dazu benutze ich den Eazfuscator .Net von Oleksiy Gapotchenko (Projektseite). Dieser Thread im VB-Paradise zeigt wie wirksam so ein Obfuscator sein kann: Was ist das ? verschlüsselt ?

Dann stellen wir mal was klar:

Womit schütze ich:

Zum Schützen von Code benutzt man einen Obfuscator. Diese Obfuscator machen aus dem fertigen Build eine Blackbox.

Was ist eine Blackbox:

Eine Blackbox beschreibt ein komplexes System, bei welchem man nur das äußere sieht. Das was drin steckt kann man nur vermuten. Der Name kommt von der Vorstellung: etwas ist in einer schwarzen Schachtel und die Schachtel ist so dunkel, dass man selbst mit einer Lampe reinleuchtet nicht erkennt was in der Kiste ist.

Was brauche ich:

Die Installation

Ihr downloadet euch unten aus den Quellen, den .msi-Installer und schließt schon einmal alle Fenster von Visual Studio. Danach führt ihr den Installer aus und bestätigt ggbf. erscheinende Meldungen zur Sicherheit von Microsoft mit "Ja" und/oder mit "Ok". Das sollte das erste sein, was ihr seht:
install1
Danach sollt ihr ein Lizenzabkommen bestätigen.
install2
Hauptsächlich geht es darin darum, dass ihr den Obfuscator für jedes Projekt, somit auch kommerzielle, aber auf eigene Gefahr verwenden dürft. Nach dem Einverständnis mit dem Lizenzabkommen sollt ihr den Installationspfad angeben:
install3
Danach kommt kurz ein Ladebalken und ein Abschlussdialog mit weiteren Informationen:
install4

Gefunden ? und die Optionen

Nach dem ihr Eazfuscator .Net erfolgreich installiert habt könnt ihr sofort wieder eure Projekte öffnen. Schon ohne überhaupt ein Projekt geöffnet zu haben, kann man im Extras-Menu einen ähnlichen Eintrag, wie diesen finden:
discover1
Klickt ihr darauf solltet ihr diesen Dialog vorfinden:
discover2
Hier spricht jedes Feld für sich. Geschweige denn man kann Englisch. Oben rechts lässt sich der Einstellungen-Button finden. Dieser öffnet einen Dialog für folgende Einstellungsmöglichkeiten:

    Nicht auf Updates überprüfen

  1. Fail-Safe benutzten

    Diese Option ändert den Projekteintrag so um, dass beim Portieren und öffnen in anderen IDEs (z.B. auf anderen PCs) die IDE keine Fehler gibt, wenn Eazfuscator .Net nicht installiert ist, und das Erstellen somit nicht verhindert. Somit wird beim Fehlen des Eazfuscator .Net auch nichts obfuskiert.
  2. Obfuskieren ausschalten

    Solange wie diese Option gecheckt ist, wird nicht obfuskiert, aber ein Eintrag in die Projekte gemacht.
Der Einstellungs-Dialog:
discover3

Wie verwendet man ihn richtig ?

Das Verwenden ist noch einfacher als das Installieren. Einfach den Eazfuscator .Net-Dialog öffnen und das Projekt in den grünen Bereich ziehen:
use1
Danach kommt kurz ein Dialog mit Ladebalken, der den Erfolg bestätigt:
use2
Doch das Eazfuscator .Net das Projekt verändert hat stellt Visual Basic/CSharp/Studio schnell fest und fordert zum Neuladen auf. Dies einfach bestätigen und weiter arbeiten:
use3

Und wie krieg ich den jetzt wieder raus ?

Einfach das Projekt in den roten Bereich des Eazfuscator .Net-Dialogs ziehen und das Projekt neu laden lassen:
use4

Ich hoffe, dass hat euch einen guten Einblick mit dem Umgang von Eazfuscator .Net geboten. Es gibt aber nicht nur Eazfuscator .Net. Ein weiterer weitverbreitete Obfuscator ist .Net Reactor. Doch dieser ist ShareWare und somit nicht für jeden auf Dauer kostenfrei erhältlich.