Offuscare l'applicazione Silverlight con Dotfuscator
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.
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.
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.
In realtà, questo file è compresso e compilato come file ZIP, quindi l'estensione è ". zip".
È stato modificato in un file 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.
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".
Viene avviato 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.
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.
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.
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.
Viene creato un file 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.
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.