Offuscare l'applicazione Silverlight con Dotfuscator

Pagina aggiornata :
Data di creazione della pagina :

Informazioni su Dotfuscator

Dotfuscator è un offuscatore che rende difficile la lettura del codice sorgente quando le applicazioni scritte con .NET Framework vengono disassemblate. Dotfuscator è disponibile nelle versioni retail gratuite e a pagamento fornite con Visual Studio.

La versione gratuita è disponibile solo con molte funzionalità limitate e il presupposto che Visual Studio sia in esecuzione, ma chiunque abbia Visual Studio installato può utilizzarlo. La versione a pagamento ha molte potenti funzionalità di offuscamento che non sono disponibili nella versione gratuita, ma potrebbe essere fastidioso che sia offerta a un prezzo difficile da permettersi per il grande pubblico.

Dotfuscator può avere caratteristiche, prezzi ed edizioni diversi a seconda della versione, quindi fare riferimento al seguente sito Web per i dettagli.

Dotfuscator

Codice analizzato

Come accennato in precedenza, le applicazioni create con .NET Framework possono facilmente leggere il codice sorgente originale disassemblando, ma ciò che accade effettivamente è che quando si disassembla un file di assembly come illustrato nella figura, è possibile riprodurre la maggior parte del codice sorgente originale, ad esempio spazi dei nomi, nomi di classi e nomi di metodi.

解析されたコード

Procedura di offuscamento

Iniziare creando l'applicazione Silverlight come di consueto ed eseguendo una build di rilascio. Qui, stiamo creando un'applicazione che posiziona solo due pulsanti.

Release ビルド

Nella cartella Bin\Release della cartella in cui si trova il progetto digitare . xap" è un file di pacchetto che riepiloga i programmi e i file utilizzati nelle applicazioni Silverlight.

XAP ファイル

In realtà, questo file è compresso e compilato come file ZIP, quindi l'estensione è ". zip".

拡張子を .zip に変更

È stato modificato in un file ZIP.

ZIP ファイル

Quando si apre il file, contiene un file manifesto e una DLL. Questa DLL è la versione compilata del programma che viene eseguito come applicazione.

A proposito, il file DLL viene anche inserito nella cartella Release quando viene compilato, quindi questa volta offuscheremo questo file.

ZIP ファイルの中身

Dal menu di Visual Studio selezionare Strumenti e quindi PreEmptive Dotfuscator And Analytics.

Quando si avvia per la prima volta, verrà visualizzata la finestra di dialogo "Contratto di licenza", quindi leggere attentamente il contenuto, selezionare "Sì, accetto il contratto di licenza" e fare clic sul pulsante "OK".

PreEmptive Dotfuscator And Analytics を選択

Viene avviato PreEmptive Dotfuscator And Analytics CE.

PreEmptive Dotfuscator And Analytics CE

Seleziona "Ingressi" dall'albero a sinistra e fai clic sul pulsante "Aggiungi input".

入力の追加

Selezionare il file DLL generato durante la compilazione.

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

Seleziona il file DLL aggiunto e deseleziona Modalità libreria > Conversione XAML.

Se l'opzione "Modalità libreria" è selezionata, le classi e i metodi definiti in pubblico non verranno offuscati.

Se l'opzione "Conversione XAML" è selezionata, le classi definite in XAML verranno offuscate, ma a seconda di come vengono create, causerà un errore di avvio, quindi se si verifica, deselezionalo.

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

Fondamentalmente, tutte le classi, i metodi, le proprietà e i nomi delle variabili sono offuscati, ma se non si desidera offuscare uno spazio dei nomi o una classe specifici a causa della serializzazione, selezionare "Rinomina" dall'albero a sinistra, selezionare la scheda "Escludi" e controllare lo spazio dei nomi o la classe di destinazione.

難読化の除外

In Regole predefinite verificare che l'opzione Campi per Silverlight e WPF UserControls sia selezionata. Se si verifica questa operazione, il campo UserControls verrà offuscato e verrà eseguito correttamente. Puoi deselezionarlo se sembra funzionare correttamente anche dopo l'offuscamento.

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

Al termine, fai clic sul pulsante "Costruisci progetto" dalla barra degli strumenti.

プロジェクトのビルド

Se ci sono modifiche al progetto, verrà visualizzata la finestra di dialogo di conferma del salvataggio del progetto, quindi fare clic su "Sì" per salvare.

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

Il progetto si chiama ". xml". I file offuscati vengono salvati nella stessa posizione.

プロジェクト保存

Attendere il completamento della compilazione all'avvio. Si noti che più grande è il programma, più tempo ci vuole per la compilazione. Quando assomiglia alla figura, la compilazione è completa.

Il campo del messaggio mostra lo stato di avanzamento della compilazione e un breve risultato, ad esempio quanto è stato offuscato.

ビルド完了

Se si seleziona Risultati dalla struttura ad albero a sinistra, è possibile visualizzare i dettagli su come sono stati modificati i nomi delle classi e dei metodi.

Sotto i nomi delle classi e dei metodi, ci sarà un'icona Dotfuscator e nomi come "a" e "b", che saranno il nome offuscato. Modificando il nome della classe o del metodo in un nome privo di significato in questo modo, anche se è disassemblato, può rendere difficile la lettura del contenuto del codice sorgente.

難読化結果

Il file offuscato viene creato in una cartella denominata "Dotfuscated" nella cartella del file .xml salvato in Salva progetto. Oltre al file offuscato, è stato creato un file "Map.xml", ma questo è il risultato dell'offuscamento e non viene utilizzato.

難読化したファイル

Se si disassembla il file offuscato, è possibile vedere che alcuni nomi di classi e metodi sono stati modificati in "a" o "b".

Questa volta, il progetto predefinito creato è stato offuscato quasi com'era, quindi penso che ci sia un'immagine che non è così offuscata, ma penso che l'effetto dell'offuscamento diventi più chiaro perché il numero di classi ecc. Aumenta man mano che il progetto cresce.

Per inciso, . NET Framework e non sono soggetti a ridenominazione perché, ad esempio, si tratta di assembly già installati in Windows.

難読化したコードの解析

Silverlight non utilizza le DLL così come sono, pertanto vengono inserite in un pacchetto come file XAP. Come accennato all'inizio, un file XAP è solo una modifica nell'estensione del file ZIP, quindi crea un file ZIP raccogliendo i file contenuti nel file XAP e le DLL offuscate.

La creazione di un file ZIP può essere eseguita utilizzando le funzionalità standard del sistema operativo.

ファイルを ZIP 化

Viene creato un file ZIP.

ZIP ファイル

L'estensione viene modificata in '. xap" e se il nome del file è diverso, modificarlo con il nome del file del pacchetto originale.

Posizionare il file XAP in un percorso di distribuzione.

XAP ファイルに変更

Si prega di controllare l'operazione e vedere se funziona correttamente.

Se non si avvia, controllare fino a quando funziona normalmente riducendo il codice offuscato. Si noti che Silverlight spesso rimane bloccato in questioni correlate a XAML.

動作確認

Sebbene le istruzioni non siano elencate qui, se si desidera firmare un programma, compilarlo in uno stato con firma ritardata, offuscare l'assembly e quindi firmare nuovamente. Anche se lo si offusca mentre è firmato, il codice di firma allegato al momento della compilazione e il codice di firma dopo l'offuscamento non corrisponderanno, quindi non sarà possibile avviarlo.

In questo articolo, ho elencato i passaggi per la versione gratuita, ma se si utilizza la versione a pagamento, è possibile eseguire offuscamenti più complessi e impedire lo smontaggio stesso. Tuttavia, l'offuscamento ha il potenziale di causare vari effetti negativi, quindi quando viene effettuato l'offuscamento, è necessario considerare se funzionerà correttamente dall'inizio della progettazione.