Mit Dotfuscator erstellte Anwendungen verschleiern

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Zusammenfassung

Da Anwendungen, die auf .NET Framework basieren, in einer so genannten allgemeinen Zwischensprache erstellt werden, können sie mithilfe von Disassemblierungstools und dergleichen in einer Form gelesen werden, die dem ursprünglichen Quellcode nahe kommt. In diesem Abschnitt wird beschrieben, wie Sie Dotfuscator, den mit Visual Studio gelieferten Obfuscator, verschleiern, um Klassen- und Methodennamen in ein Format zu verschleiern, das nicht leicht lesbar ist.

Wir sprechen hier darüber mit Visual Studio 2010, aber Sie können Dotfuscator auch in 2005 und 2008 verwenden.

Dotfuscator を使用して作成したアプリケーションを難読化する

Betriebsumgebung

Unterstützte Visual Studio-Versionen

  • 2005
  • 2008
  • 2010

Überprüfen der Visual Studio-Version

  • 2005
  • 2008
  • 2010

Substanz

Über Dotfuscator

Dotfuscator ist ein Verschleierungstool, das das Lesen von Quellcode erschwert, wenn er in Anwendungen demontiert wird, die mit .NET Framework geschrieben wurden. Dotfuscator wird mit Visual Studio kostenlos und gegen Gebühr geliefert.

Die kostenlose Version ist nicht verfügbar, es sei denn, viele ihrer Funktionen sind eingeschränkt oder Visual Studio wird gestartet, aber jeder kann sie verwenden, solange Visual Studio installiert ist. Die kostenpflichtige Version verfügt über viele leistungsstarke Verschleierungsfunktionen, die in der kostenlosen Version nicht zu finden sind, aber sie wird zu einem Preis angeboten, der für die breite Öffentlichkeit schwer zu leisten ist.

Dotfuscator hat je nach Version unterschiedliche Funktionen, Preise und Editionen, daher besuchen Sie bitte die folgende Homepage für Details.

Verschleierungsverfahren

難読化していないアプリケーションの逆アセンブル結果

Ich habe bereits erwähnt, dass Anwendungen, die mit .NET Framework erstellt wurden, den ursprünglichen Quellcode disassemblieren und leicht lesen können, aber die tatsächliche Situation ist, dass, wenn Sie die EXE-Datei wie in der Abbildung rechts gezeigt disassemblieren, Sie den ursprünglichen Quellcode wie Namespace, Klassenname, Methodenname usw. fast reproduzieren können.

Beschreibt die Schritte, um diese Namen verwirrend und verschleiert zu machen.

Dotfuscator Software Services

Das Erstellen einer Anwendung in Visual Studio und das Erstellen einer EXE-Datei entspricht genau der normalen Art und Weise, sie zu erstellen.

Nachdem Sie die EXE-Datei erstellt und erstellt haben, wählen Sie im Visual Studio-Menü Extras und dann Dotfuscator-Softwaredienste aus.

使用許諾契約書

Wenn Sie zum ersten Mal starten, wird der Dialog "Lizenzvereinbarung" wie in der Abbildung rechts dargestellt angezeigt, also lesen Sie den Inhalt sorgfältig durch, aktivieren Sie "Ja, ich stimme der Lizenzvereinbarung zu." und klicken Sie auf die Schaltfläche "OK".

Dotfuscator Software Services

Dotfuscator Software Services wird gestartet.

入力アセンブリの追加

Die zu verschleiernde exe (oder DLL-Datei) muss nicht aus dem aktuell geöffneten Projekt stammen.

Wählen Sie in der Struktur auf der linken Seite Eingabebaugruppen aus, und klicken Sie auf die Eingabebaugruppen auf der rechten Seite, um auf die Schaltfläche ... zu klicken.

難読化する exe ファイル

Wählen Sie die EXE-Datei aus, die Sie verschleiern möchten.

追加したアセンブリ

Die ausgewählte exe-Datei wird der Liste hinzugefügt. Wenn Sie mehrere Dateien verschleiern möchten, klicken Sie auf die Schaltfläche "..." nach der zweiten Zeile, um sie hinzuzufügen.

プロジェクトのビルド

Nachdem Sie die exe ausgewählt haben, die Sie verschleiern möchten, klicken Sie in der Symbolleiste auf die Schaltfläche Projekt erstellen.

プロジェクトの保存

Wenn es Änderungen am Projekt gibt, wird das Bestätigungsdialogfeld zum Speichern des Projekts angezeigt, also klicken Sie zum Speichern auf "Ja".

プロジェクトの保存場所指定

Das Projekt heißt ". xml"-Datei. Die verschleierte exe-Datei wird ebenfalls am selben Speicherort gespeichert, also speichern Sie die .xml Datei in einem beliebigen Ordner.

ビルド

Der Build wird gestartet und wartet, bis er abgeschlossen ist. Beachten Sie, dass die Erstellung umso länger dauert, je größer das Programm ist. Wenn es wie die Abbildung auf der rechten Seite aussieht, ist der Build abgeschlossen.

Das Meldungsfeld zeigt einfache Ergebnisse an, z. B. den Fortschritt des Builds und wie verschleiert er war.

難読化結果

Wenn Sie "Ergebnis" aus der Struktur auf der linken Seite auswählen, können Sie Details darüber sehen, wie sich die Klassen- und Methodennamen geändert haben.

Unter den Klassen- und Methodennamen befinden sich ein Dotfuscator-Symbol und ein Name wie "a" oder "b", der verschleierte Name. Indem Sie den Klassennamen oder Methodennamen in einen bedeutungslosen Namen wie diesen ändern, können Sie den Inhalt des Quellcodes selbst dann schwer lesbar machen, wenn er disassembliert ist.

難読化したアセンブリ

Verschleierte EXE-Dateien werden im Ordner .xml im Save Project gespeicherten Dateien mit dem Namen "Dotfuscated" erstellt und darin erstellt. Zusätzlich zur exe-Datei wurde eine "Map .xml" -Datei erstellt, die jedoch das Ergebnis von Verschleierung ist und nicht verwendet werden sollte.

難読化したアセンブリの実行時エラー

Verschleierte Exes können so ausgeführt und verwendet werden, wie sie sind. Es gibt jedoch Fälle, in denen es aufgrund eines unbekannten Fehlers nicht gestartet werden kann, wie in der Abbildung rechts gezeigt.

Diesmal habe ich eine Anwendung in WPF geschrieben, aber da die XAML-Datei des ersten anzuzeigenden Fensters als Zeichenfolge angegeben ist, führt die Umbenennung aufgrund von Verschleierung dazu, dass der Verweis verloren geht, was zu einem Fehler führt.

Windows Form-Anwendungen verweisen direkt auf die From-Klasse, sodass sie fehlerfrei ausgeführt werden können, auch wenn sie verschleiert sind. Wenn Sie jedoch einen Klassennamen, einen Enumerationstyp usw. nach Namen angeben, müssen Sie vorsichtig sein, da die Möglichkeit besteht, dass derselbe Fehler auftritt.

難読化の除外

Wenn Sie eine Klasse oder etwas anderes nicht verschleiern möchten, wählen Sie in der Struktur auf der linken Seite von Dotfuscator die Option Umbenennen und auf der mittleren Registerkarte Ausschließen aus.

Jeder Namespace, Klassenname usw. wird in der Liste auf der rechten Seite angezeigt, also überprüfen Sie die Elemente, die Sie nicht verschleiern möchten.

Hier möchte ich den Klassennamen des Fensters, das zuerst angezeigt werden soll, nicht ändern, also überprüfe ich "MainWindow".

難読化から除外されたクラス

Wenn Sie den Build ausführen, können Sie sehen, dass es keinen geänderten Namen unter dem Klassennamen in MainWindows gibt. (App-Klasse wurde in "a" konvertiert)

難読化したアセンブリの実行

Wenn Sie die verschleierte EXE-Datei ausführen, können Sie sehen, dass das Fenster korrekt angezeigt wird.

難読化後の逆アセンブル

Wenn Sie die verschleierte exe-Datei disassemblieren, können Sie sehen, dass der Klassenname und der Methodenname ordnungsgemäß in "a" oder "b" geändert wurden.

Aber nebenbei. NET Framework-Bibliotheken wie Klassennamen können nicht umbenannt werden, da es sich um Assemblys handelt, die bereits unter Windows und anderswo installiert sind.

Diesmal habe ich das Standardprojekt verschleiert, das so erstellt wurde, wie es ist, also denke ich, dass es ein Bild gibt, dass es nicht so verschleiert ist, aber ich denke, dass der Effekt der Verschleierung klar wird, weil die Anzahl der Klassen usw. mit dem Wachstum des Projekts zunimmt.

Obwohl wir das Verfahren diesmal in die kostenlose Version aufgenommen haben, ermöglicht die kostenpflichtige Version eine komplexere Verschleierung und verhindert auch die Demontage selbst. Die Verschleierung hat jedoch verschiedene nachteilige Auswirkungen und kann auftreten, so dass es bei der Verschleierung notwendig ist, sie zu machen, während man überlegt, ob sie von Anfang an richtig funktioniert.