Erste Schritte mit der eigenständigen Benutzeroberfläche
In diesem Abschnitt wird die Verwendung der eigenständigen Benutzeroberfläche von Dotfuscator behandelt. Ein vollständiges Handbuch zur Benutzeroberfläche von Dotfuscator finden Sie unter Benutzeroberflächenreferenz.
Schritt 1 – Starten der Dotfuscator-Benutzeroberfläche
- Klicken Sie auf Start | Programme | PreEmptive Solutions | Dotfuscator Professional Edition 4.0 | Dotfuscator.
- Das Dialogfeld Info wird angezeigt. Zum Fortfahren klicken Sie auf das Dialogfeld, drücken eine beliebige Taste oder warten 5 Sekunden.
Schritt 2 – Erstellen eines Standardprojekts
- Wählen Sie Neues Projekt erstellen aus, und klicken Sie auf OK. Das Dotfuscator-Hauptprojektfenster wird angezeigt, und die Registerkarte Eingabe ist ausgewählt.
- Hier wählen Sie die Assembly aus, die Sie verbergen möchten.
- Klicken Sie auf Durchsuchen.
- Wechseln Sie zum Verzeichnis:
C:\Programme\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\bin\Debug
- , und wählen Sie GettingStarted.exe aus.
- Klicken Sie auf Öffnen. Der Pfad zur ausführbaren Datei wird jetzt im Listenfeld unter Eingabeassemblys angezeigt.
- Wählen Sie Datei | Projekt speichern aus, um das Projekt zu speichern.
- Navigieren Sie im Dialogfeld Projekt speichern zu:
C:\Programme\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\
- Geben Sie im Feld Dateiname den Namen Dotfuscator.xml ein, und klicken Sie auf Speichern.
Schritt 3 – Erstellen des Projekts
- Klicken Sie auf die Registerkarte Erstellen. Das Feld Zielverzeichnis enthält standardmäßig den Eintrag ${configdir}\Dotfuscated. Hinweis: ${configdir} ist eine Variable, die den Pfad zur Dotfuscator-Konfigurationsdatei enthält.
- Jetzt kann das Verbergen des Projekts beginnen. Klicken Sie auf Erstellen. Warten Sie einige Augenblicke, bis Dotfuscator eine verborgene Version der HelloWorld-Anwendung erstellt hat. Die verborgene Assembly wird im folgenden Verzeichnis gespeichert:
C:\Programme\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\Dotfuscated
Sie können nun zur Registerkarte Ausgabe wechseln, um die verborgenen Symbole anzuzeigen, die Zuordnungsdatei für die Umbenennung (map.xml) öffnen, die von Dotfuscator im Ausgabeverzeichnis erstellt wurde, oder auch die verborgene Anwendung ausführen. Nur mit den Standardeinstellungen und ohne nennenswerte Konfiguration wurde die Anwendung verborgen.
Als Nächstes können Sie in nur wenigen Konfigurationsschritten einige der leistungsstärkeren Features von Dotfuscator verwenden.
Schritt 4 – Konfigurieren des Projekts
- Klicken Sie auf die Registerkarte Optionen.
- Legen Sie die Eigenschaft Buildstatus auf Ausführlich fest. Dies bedeutet, dass Dotfuscator während der Ausführung am unteren Rand der Registerkarte Erstellen zusätzliche Informationen über den Verlauf anzeigt.
- Legen Sie Debugsymbole ausgeben auf Ja fest. Durch Festlegen dieser Eigenschaft veranlassen Sie Dotfuscator, für jede Ausgabeassembly eine Symboldatei im PDB-Format zu erstellen. Mithilfe dieser Dateien können Debugger nützliche Informationen für eine Debugsitzung erhalten. Normalerweise enthalten sie Informationen wie Zeilennummern, Quelldateinamen und Namen von lokalen Variablen. Die PDB-Dateien werden zusammen mit den Ausgabeassemblys im Ausgabeverzeichnis gespeichert.
- Legen Sie die Werte für Umbenennen deaktivieren, Ablaufsteuerung deaktivieren, Zeichenfolgenverschlüsselung deaktivieren und Entfernen deaktivieren auf Nein fest. Sie können genau steuern, welche Transformationen Dotfuscator auf die Assemblys anwendet. Diese Features werden in den nächsten Schritten konfiguriert und verwendet.
- Klicken Sie auf die Registerkarte Umbenennen. Durch Umbenennen wird Code verborgen, indem Methoden und Felder mit unverständlichen Namen umbenannt werden Dieses Feature ist standardmäßig aktiviert, und Sie müssen die Elemente auswählen, die vom Umbenennungsvorgang ausgeschlossen werden sollen. Für diese Anwendung müssen Sie keine Elemente ausschließen.
- Klicken Sie auf die Unterregisterkarte Optionen. Aktivieren Sie Erweiterte Überladungsinduktion verwenden. Dieses Feature ermöglicht eine bis zu 15 Prozent höhere Redundanz bei Methoden- und Feldumbenennungen. Da das Überladen des Methodenrückgabetyps oder Feldtyps i. d. R. in Quellsprachen (einschließlich C# und VB) nicht zulässig ist, behindert dies die Arbeit von Decompilern zusätzlich.
- Beachten Sie, dass das Textfeld Zuordnungsausgabedatei den Standardwert ${configdir}\Dotfuscated\Map.xml enthält.
- Aktivieren Sie Als HTML ausgeben, um einen hilfreichen Bericht zu erhalten, der Umbenennungsinformationen und Statistiken zur Anwendung enthält. Dieser Bericht wird im gleichen Verzeichnis wie die Zuordnungsdatei ausgegeben. Der Standardspeicherort ist ${configdir}\Dotfuscated\Map.html.
- Klicken Sie auf die Registerkarte Ablaufsteuerung. Beim Verbergen der Ablaufsteuerung werden Verzweigungs-, bedingte und iterative Konstrukte (z. B. if, for und while) erstellt, die gültige (ausführbare) Ablauflogik erzeugen, um beim Versuch der Dekompilierung nicht deterministische semantische Ergebnisse hervorzubringen. Mit anderen Worten, der Code wird wie gehabt ausgeführt, aber Decompiler können den ursprünglichen Code nicht mehr reproduzieren.
- Klicken Sie auf die Registerkarte Zeichenfolgenverschlüsselung. Die Zeichenfolgenverschlüsselung verschlüsselt die Zeichenfolgen in der Anwendung. Wenn z. B. jemand Registrierung und Überprüfung umgehen möchte, kann er nach der Zeichenfolge suchen, mit der das Programm den Benutzer zur Eingabe der Seriennummer auffordert. Wenn er die Zeichenfolge findet, kann er nach den zugehörigen Anweisungen suchen und die Logik ändern. Die Zeichenfolgenverschlüsselung erschwert dies erheblich, da die Suche ohne Ergebnis bleibt.
- Die Zeichenfolgenverschlüsselung folgt dem Einschlussprinzip, d. h. Sie müssen das Kontrollkästchen der Assembly am Stamm der im linken Bereich angezeigten Struktur aktivieren, damit alle Methoden in der Eingabeassembly eingeschlossen werden.
- Klicken Sie auf die Registerkarte Entfernen. Beim Entfernen werden von Dotfuscator nicht verwendete Typen, Methoden und Felder erkannt und entfernt. Dies kann u. U. zu einem beträchtlich geringeren Speicherbedarf der endgültigen Anwendung führen.
- Ein erfolgreiches Entfernen setzt voraus, dass Dotfuscator die Einstiegspunkte in der Anwendung erkennt. In diesem Fall ist der Einstiegspunkt die Standardmethode Main, und Dotfuscator kann dies ohne weitere Konfigurationsschritte bestimmen.
Schritt 5 – Neuerstellen des Projekts
- Klicken Sie auf Erstellen. Das Projekt kann jetzt erneut verborgen werden. Wie gehabt, wird die verborgene Assembly im folgenden Verzeichnis gespeichert:
C:\Programme\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\dotfuscated
Schritt 6 – Durchsuchen der Ausgabe
- Klicken Sie auf die Registerkarte Ausgabe. Jetzt können Sie in einer Struktur navigieren, die zeigt, wie der Code von Dotfuscator verborgen wurde.
- Erweitern Sie die Stammstruktur und alle Teilstrukturen. Beachten Sie die Symbole in Form einer blauen Raute. Diese kennzeichnen die umbenannten Methoden und Felder. Die übergeordneten Elemente über diesen Symbolen zeigen jeweils den ursprünglichen Namen an. Es wurden alle Methoden und Felder von Dotfuscator umbenannt, sodass es nahezu unmöglich ist, den Zweck der einzelnen Methoden zu entschlüsseln. Dies hat gravierende Auswirkungen auf den Vorgang eines Reverse Engineering des Codes.
- Beachten Sie die derzeit hervorgehobenen Methoden SaySomething und set_Name sowie die Name-Eigenschaft. Dotfuscator hat erkannt, dass diese Elemente in dieser Anwendung nicht verwendet werden. Folglich können diese mithilfe des Pruningfeatures von Dotfuscator entfernt werden, um so eine kompaktere Anwendung zu erhalten.
Nächste Schritte
Nachdem Sie nun die Verbergung mit der Benutzeroberfläche durchgeführt haben, können Sie die Befehlszeilenschnittstelle zum gleichen Zweck verwenden. Sie können auch die Einzelheiten der verborgenen Ausgabeassembly untersuchen, um die Effektivität der Verbergung zu beurteilen.
© 2002-2007 PreEmptive Solutions. Alle Rechte vorbehalten.