Projekte schützen = Obfuskieren ! Was ist das und wofür ist das gut ?

    • VB.NET

    Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von SuperMan.

      Projekte schützen = Obfuskieren ! Was ist das und wofür ist das gut ?

      Wie schütze ich mein Projekt vor dem Auslesen ?


      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).

      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.

      Ist das auch 100%ig sicher:
      Nein. Jeder Code, den man mit Bezug auf das .Net-Framework schreibt, wird in CIL umgewandelt. Dies ist eine eigene Sprache für sich und wird von einem Interpreter ausgelesen und dann ausgeführt. Das entspricht dem JIT-Debuggen (Just-In-Time Debugging) heißt aber JIT-Kompilieren, da hier ja nicht nach Fehler gesucht wird, sondern es ausgeführt werden soll.
      Da dieser Interpreter den CIL-Code noch lesen können muss, heißt das somit schon, dass selbst geschützter Code noch auslesbar ist und somit nicht zu 100% geschützt ist.

      Warum schütze ich dann eigentlich:
      Das erschwert es den Decompilern (Gegenteil vom Compiler = Binary -> text/plain) das Erzeugen eures Codes oder verhindert es sogar.

      Was brauche ich:
      • Man braucht eine Sprache, die obfuskiert werden kann(mit Eazfuscator .Net sollen alle .Net-Sprachen funktionieren)
      • und eine Visual Studio IDE ab 2005, die das PlugIn unterstützt


      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".
      Danach sollt ihr ein Lizenzabkommen bestätigen.
      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.
      Danach kommt kurz ein Ladebalken und ein Abschlussdialog mit weiteren Informationen.

      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 Eintrag finden für den "Eazfuscator .Net Assistant".
      Im Hauptdialog 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:
      1. Nicht auf Updates überprüfen
      2. Fail-Safe benutztenDiese 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.
      3. Obfuskieren ausschaltenSolange wie diese Option gecheckt ist, wird nicht obfuskiert, aber ein Eintrag in die Projekte gemacht.


      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.
      Danach kommt kurz ein Dialog mit Ladebalken, der den Erfolg bestätigt.
      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.
      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.

      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. Dieser Thread hier im Forum zeigt wie wirksam so ein Obfuscator sein kann: Was ist das ? verschlüsselt ?

      Eine vollständig bebilderte Version gibts auf joshua-behrens.de/index.php?p=post001

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Mangafreak1995“ () aus folgendem Grund: Homepagelink aktualisiert, Eazfuscator auf Anfrage verlinkt

      Da möchte ich den Punkt 3 hervorheben : Es kann nicht 100% gesichert werden. Doch es gibt Möglichkeiten mit einfachen Texteditoren .Net-Builds zu öffnen und anzuschauen, welches aber nach dem Obfuskieren sehr viel schwerer zu lesen/verstehen ist.
      Ist das nicht ein bisschen widersprüchlich? Wenn ich jetzt mein Projekt geschützt habe und weiter gebe kann der sich doch auch einfach das Programm runterladen und wieder entschlüsseln. Und weil soweit ich weis wird Eazfuscator nicht grade selten benutzt. Wenn es also jemand darauf anlegt an meinen Code zu kommen würde er es doch auch ziemlich leicht hinbekommen oder?
      Ich wiederhole mich gerne : Es ist halt nicht zu 100% möglich. Ganz am Anfang als ich den Obfuskator ausprobiert habe konnte ich mit .Net Reactor nichts machen, jetzt hingegen schon. Das liegt einfach an .Net Reactor und daran, dass es besser geworden ist. Willst du etwas nicht Auslesbares eigne dir natives C(++) an, aber leider ist .Net so gestrickt. Besser als so geht's mit dem Eazfuscator nicht.
      Habe die Projektseite dazu einmal im Startpost verlinkt.

      Ein Video dazu

      Hey.
      Habe dieses Thema jetzt erst gefunden und in den Regeln steht, ich darf es ergänzen.

      Ich habe nähmlich ein Video vor längerer Zeit zu dem Thema gemacht.
      Vielleicht hilft das einigen noch.

      Video:
      Spoiler anzeigen
      http://www.youtube.com/watch?v=NYb6Bfgletg&list=UUXEmXVKMh0wCNNjcd9P6X9A&index=35&feature=plcp


      Wie gesagt: Länger her also nicht über diese lustige Stimme wundern...

      TheGameSiders
      Leider ja. Aber die, die es sich vorher runtergeladen haben und nicht geupdated haben können noch die volle Funktionalität nutzen ;)