Verschleiern Sie Ihre Silverlight-Anwendung mit Dotfuscator

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Über Dotfuscator

Dotfuscator ist ein Obfuscator, der das Lesen von Quellcode erschwert, wenn mit .NET Framework geschriebene Anwendungen disassembliert werden. Dotfuscator ist sowohl in kostenlosen als auch in kostenpflichtigen Verkaufsversionen verfügbar, die mit Visual Studio geliefert werden.

Die kostenlose Version ist nur mit vielen eingeschränkten Funktionen und der Annahme verfügbar, dass Visual Studio ausgeführt wird, aber jeder, der Visual Studio installiert hat, kann es verwenden. Die kostenpflichtige Version verfügt über viele leistungsstarke Verschleierungsfunktionen, die in der kostenlosen Version nicht verfügbar sind, aber es kann ärgerlich sein, dass sie zu einem Preis angeboten wird, der für die breite Öffentlichkeit schwer zu leisten ist.

Dotfuscator kann je nach Version unterschiedliche Funktionen, Preise und Editionen haben, daher finden Sie weitere Informationen auf der folgenden Website.

Dotfuscator

Analysierter Code

Wie oben erwähnt, können Anwendungen, die mit .NET Framework erstellt wurden, den ursprünglichen Quellcode durch Disassemblieren leicht lesen, aber was tatsächlich passiert, ist, dass beim Disassemblieren einer Assemblydatei, wie in der Abbildung gezeigt, der größte Teil des ursprünglichen Quellcodes wie Namespaces, Klassennamen und Methodennamen reproduziert werden kann.

解析されたコード

Verschleierungsverfahren

Erstellen Sie zunächst wie gewohnt die Silverlight-Anwendung und führen Sie einen Releasebuild durch. Hier erstellen wir eine Anwendung, die nur zwei Schaltflächen platziert.

Release ビルド

Geben Sie im Ordner Bin\Release des Ordners, in dem sich das Projekt befindet, ein. xap" ist eine Paketdatei, die die in Silverlight-Anwendungen verwendeten Programme und Dateien zusammenfasst.

XAP ファイル

Eigentlich ist diese Datei komprimiert und als ZIP-Datei kompiliert, so dass die Erweiterung ". PLZ".

拡張子を .zip に変更

Es wurde in eine ZIP-Datei geändert.

ZIP ファイル

Wenn Sie die Datei öffnen, enthält sie eine Manifestdatei und eine DLL. Diese DLL ist die kompilierte Version des Programms, das als Anwendung ausgeführt wird.

Übrigens wird die DLL-Datei auch im Release-Ordner abgelegt, wenn sie erstellt wird, so dass wir diese Datei diesmal verschleiern werden.

ZIP ファイルの中身

Wählen Sie im Visual Studio-Menü Extras und dann PreEmptive Dotfuscator And Analytics aus.

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

PreEmptive Dotfuscator And Analytics を選択

Der PreEmptive Dotfuscator And Analytics CE startet.

PreEmptive Dotfuscator And Analytics CE

Wählen Sie "Eingaben" aus dem Baum auf der linken Seite und klicken Sie auf die Schaltfläche "Eingabe hinzufügen".

入力の追加

Wählen Sie die DLL-Datei aus, die Sie während des Builds generiert haben.

ビルドで生成した DLL ファイルを選択

Wählen Sie die hinzugefügte DLL-Datei aus, und deaktivieren Sie Bibliotheksmodus > XAML-Konvertierung.

Wenn "Bibliotheksmodus" aktiviert ist, werden öffentlich definierte Klassen und Methoden nicht verschleiert.

Wenn "XAML-Konvertierung" aktiviert ist, werden in XAML definierte Klassen verschleiert, aber je nachdem, wie Sie sie erstellen, wird dies einen Startfehler verursachen.

「ライブラリ モード」「XAML の変換」のチェックを外す

Grundsätzlich sind alle Klassen, Methoden, Eigenschaften und Variablennamen verschleiert, aber wenn Sie einen bestimmten Namespace oder eine bestimmte Klasse aufgrund der Serialisierung nicht verschleiern möchten, wählen Sie "Umbenennen" aus dem Baum auf der linken Seite, wählen Sie die Registerkarte "Ausschließen" und überprüfen Sie den Zielnamespace oder die Zielklasse.

難読化の除外

Stellen Sie sicher, dass unter Integrierte Regeln die Option Felder für Silverlight- und WPF-Benutzersteuerelemente aktiviert ist. Wenn Sie dies überprüfen, wird das Feld UserControls verschleiert und erfolgreich ausgeführt. Sie können es deaktivieren, wenn es auch nach dem Verschleiern richtig zu funktionieren scheint.

Silverlight および WPF UserControls のフィールド

Wenn Sie fertig sind, klicken Sie in der Symbolleiste auf die Schaltfläche "Projekt erstellen".

プロジェクトのビルド

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

プロジェクト保存確認ダイアログ

Das Projekt heißt ". xml"-Datei. Verschleierte Dateien werden am selben Speicherort gespeichert.

プロジェクト保存

Warten Sie, bis der Build abgeschlossen ist, wenn er beginnt. Beachten Sie, dass die Erstellung umso länger dauert, je größer das Programm ist. Wenn es wie die Figur aussieht, ist der Build abgeschlossen.

Das Nachrichtenfeld zeigt den Fortschritt des Builds und ein kurzes Ergebnis, z. B. wie verschleiert er war.

ビルド完了

Wenn Sie in der Struktur auf der linken Seite Ergebnisse auswählen, werden Details dazu angezeigt, wie sich die Klassen- und Methodennamen geändert haben.

Unter den Klassen- und Methodennamen befinden sich ein Dotfuscator-Symbol und Namen wie "a" und "b", die den verschleierten Namen darstellen. Durch diese Änderung des Klassen- oder Methodennamens in einen bedeutungslosen Namen, selbst wenn er disassembliert wird, kann der Inhalt des Quellcodes schwer lesbar sein.

難読化結果

Die verschleierte Datei wird in einem Ordner namens "Dotfuscated" im Ordner der .xml Datei erstellt, die in Save Project gespeichert ist. Zusätzlich zu der verschleierten Datei wurde eine "Map.xml"-Datei erstellt, die jedoch das Ergebnis der Verschleierung ist und nicht verwendet wird.

難読化したファイル

Wenn Sie die verschleierte Datei disassemblieren, können Sie sehen, dass einige Klassen- und Methodennamen in "a" oder "b" geändert wurden.

Dieses Mal wurde das erstellte Standardprojekt fast so verschleiert, wie es war, also denke ich, dass es ein Bild gibt, dass es nicht so verschleiert ist, aber ich denke, dass der Effekt der Verschleierung klarer wird, weil die Anzahl der Klassen usw. mit dem Wachstum des Projekts zunimmt.

Nebenbei bemerkt, . NET Framework-Bibliotheken und werden nicht umbenannt, da es sich beispielsweise um Assemblys handelt, die bereits unter Windows installiert sind.

難読化したコードの解析

Silverlight verwendet DLLs nicht unverändert, daher werden sie als XAP-Dateien gepackt. Wie eingangs erwähnt, ist eine XAP-Datei nur eine Änderung in der Erweiterung der ZIP-Datei, also erstellt sie eine ZIP-Datei, indem sie die in der XAP-Datei enthaltenen Dateien und die verschleierten DLLs sammelt.

Das Erstellen einer ZIP-Datei kann mit Standardfunktionen des Betriebssystems erfolgen.

ファイルを ZIP 化

Eine ZIP-Datei wird erstellt.

ZIP ファイル

Die Erweiterung wird in ' geändert. xap" und wenn der Dateiname anders ist, ändern Sie ihn in den ursprünglichen Paketdateinamen.

Platzieren Sie die XAP-Datei an einem Verteilungsspeicherort.

XAP ファイルに変更

Bitte überprüfen Sie den Betrieb und sehen Sie, ob er ordnungsgemäß funktioniert.

Wenn es nicht startet, überprüfen Sie, bis es normal funktioniert, indem Sie den verschleierten Code reduzieren. Beachten Sie, dass Silverlight häufig in XAML-bezogenen Angelegenheiten stecken bleibt.

動作確認

Obwohl die Anweisungen hier nicht aufgeführt sind, sollten Sie, wenn Sie ein Programm signieren möchten, es in einem verzögert signierten Zustand erstellen, die Assembly verschleiern, und dann erneut signieren. Selbst wenn Sie es verschleiern, während es signiert ist, stimmen der zum Zeitpunkt des Builds angehängte Signaturcode und der Signaturcode nach der Verschleierung nicht überein, sodass Sie es nicht starten können.

In diesem Artikel habe ich die Schritte für die kostenlose Version aufgelistet, aber wenn Sie die kostenpflichtige Version verwenden, können Sie eine komplexere Verschleierung durchführen und die Deassemblierung selbst verhindern. Die Verschleierung hat jedoch das Potenzial, verschiedene nachteilige Auswirkungen zu verursachen, so dass bei der Verschleierung von Anfang an geprüft werden muss, ob sie ordnungsgemäß funktioniert.