Soluzione Dotfuscator
Attualmente, la maggior parte degli offuscatori commerciali utilizza una tecnica di ridenominazione che applica identificatori semplici, in genere costituiti da un solo carattere. Durante l'elaborazione del codice, l'offuscatore seleziona il successivo identificatore semplice disponibile per la sostituzione. Questo schema di ridenominazione apparentemente semplice offre un vantaggio rispetto alle tecniche di hash o all'offset del set di caratteri, ovvero l'irreversibilità. Sebbene la logica di programma venga mantenuta, i nomi non hanno più alcun senso. In questo modo, la comprensione umana viene considerevolmente ostacolata. Di fronte a identificatori come a
, t.bb()
, ct
e 2s(e4)
, risulta difficile convertire la semantica in concetti quali invoiceID
, address.print()
, userName
e deposit(amount)
. È tuttavia possibile decodificare la logica di programma.
Una forma più completa di offuscamento utilizza l'Overload Induction, un algoritmo brevettato progettato da PreEmptive Solutions. La ridenominazione semplice viene comunque utilizzata, ma con un'importante modifica. Gli identificatori dei metodi vengono sottoposti al massimo livello di overload dopo un'accurata analisi dell'ambito. Anziché sostituire ciascun nome con un nuovo nome, Overload Induction assegna lo stesso nome al maggior numero possibile di metodi. In seguito a tale offuscamento, la logica, sebbene non venga distrutta, risulta completamente incomprensibile. Nell'esempio seguente viene illustrata l'efficacia della tecnica di Overload Induction:
Codice sorgente originale prima dell'offuscamento |
---|
|
Codice sorgente decodificato dopo l'offuscamento con la funzionalità Overload Induction di Dotfuscator |
---|
|
Nell'esempio viene dimostrato che il codice offuscato è più compatto. Un effetto positivo della ridenominazione è infatti costituito da una riduzione delle dimensioni. Se ad esempio si rinomina come a()
un nome costituito da 20 caratteri, viene risparmiato lo spazio corrispondente a 19 caratteri, conservando allo stesso tempo le voci di heap delle stringhe. La ridenominazione di ogni nome in "a
" dà come risultato la memorizzazione di "a
" una sola volta e, di conseguenza, ogni metodo o campo ridenominato in "a
" punterà a tale voce memorizzata. La tecnica di Overload Induction potenzia ulteriormente tale effetto, in quanto gli identificatori più brevi vengono continuamente riutilizzati. Dopo l'esecuzione di Overload Induction, il 70% dei metodi di un progetto viene in genere rinominato in a()
.
Dotfuscator rimuove le informazioni di debug e i metadati non essenziali dai file MSIL durante la relativa elaborazione. Oltre a ottimizzare il livello di protezione e sicurezza, ciò contribuisce a ridurre le dimensioni dei file MSIL.
È importante sottolineare che il processo di offuscamento viene applicato al codice MSIL compilato, non al codice sorgente. L'ambiente di sviluppo e gli strumenti non vengono modificati per applicare la ridenominazione. Il codice sorgente non viene mai alterato né letto in alcun modo. Il codice MSIL offuscato è funzionalmente equivalente al codice MSIL tradizionale ed è in grado di eseguire Common Language Runtime (CLR) ottenendo risultati identici. Non è tuttavia vero il contrario. Anche se risultasse decompilabile, il codice MSIL sottoposto a offuscamento completo presenterebbe differenze semantiche significative rispetto al codice sorgente originale. Nell'illustrazione riportata di seguito viene mostrato il flusso del processo di offuscamento con Dotfuscator.
PreEmptive Solutions protegge e perfeziona il software compilato a livello intermedio fin dal 1996, quando realizzò gli strumenti DashO per Java. I suoi prodotti hanno ottenuto la leadership del mercato grazie all'elevata potenza e versatilità e a esclusive funzionalità brevettate.
L'offerta Dotfuscator è costituita da una famiglia di strumenti che consentono di sfruttare la potente piattaforma .NET senza problemi in termini di protezione della proprietà intellettuale. Sono disponibili tre edizioni di Dotfuscator:
Dotfuscator Community Edition è una versione gratuita dotata delle funzionalità di offuscamento di base. Il suo scopo principale è ridenominare gli identificatori, ostacolando così la decodifica. In Dotfuscator Community Edition sono state integrate tecnologie avanzate per facilitare questo tipo di protezione. Viene inoltre garantita una parziale riduzione delle dimensioni, come conseguenza della ridenominazione in identificatori semplici.
Dotfuscator Community Edition non è in grado di:
- Funzionare separatamente da Visual Studio, il che significa che non può essere utilizzato in un ambiente di generazione commerciale.
- Rinominare tipi e metodi generici di .NET 2.0.
- Offuscare codice gestito scritto per l'integrazione con Microsoft Office.
- Offuscare codice gestito creato per essere eseguito all'interno di Microsoft SQL Server 2005.
- Supportare la modalità libreria se non come opzione globale: tale modalità deve essere attivata o disattivata per tutti gli assembly di input.
- Supportare le impostazioni di offuscamento dichiarativo se non come opzioni globali: tali impostazioni devono essere attivate o disattivate per tutti gli assembly di input.
- Supportare applicazioni C++ destinate a CLR.
Se si desidera superare tali limitazioni, rivolgersi a PreEmptive Solutions per ulteriori informazioni su Dotfuscator Professional Edition.
Le funzionalità disponibili per i titolari di licenze Dotfuscator Community Edition sono contrassegnate con l'icona .
Dotfuscator Enhanced Community Edition è disponibile come download gratuito per gli utenti registrati di Dotfuscator Community Edition. Oltre alle funzionalità di Dotfuscator Community Edition, questa edizione offre quanto segue:
- Integrazione completa con Visual Studio.
- Supporto delle funzionalità di Business Intelligence per il runtime mediante il segnale SO, ai fini dell'ottimizzazione delle applicazioni.
- Supporto del rilevamento e della notifica della manomissione delle applicazioni mediante il segnale SO.
Le funzionalità non incluse Community Edition, ma disponibili in Dotfuscator Enhanced Community Edition sono contrassegnate con l'icona .
In Dotfuscator Professional Edition sono contenute le funzionalità di Dotfuscator Community Edition e molto altro. Si tratta del principale strumento di offuscamento disponibile nel settore ed è destinato a organizzazioni che producono applicazioni commerciali e aziendali. Dotfuscator Professional Edition offre strumenti di protezione avanzata per ostacolare la decompilazione, una significativa riduzione delle dimensioni per risparmiare memoria e migliorare i tempi di caricamento, un'integrazione completa con Visual Studio per agevolare la configurazione, tecniche di offuscamento incrementale per la creazione di patch, funzionalità di applicazione di filigrane per l'assegnazione di tag univoci agli assembly, nonché supporto tecnico tramite telefono e posta elettronica. Le funzionalità disponibili per i titolari di licenze Dotfuscator Professional Edition sono contrassegnate con l'icona .
Nella tabella seguente vengono confrontate le funzionalità dei prodotti Dotfuscator.
Funzionalità | Professional Edition | Dotfuscator Enhanced Community Edition | Community Edition |
---|---|---|---|
Compattazione/Eliminazione | |||
Supporto completo per .NET Compact Framework | |||
Offuscamento del flusso di controllo | |||
Enhanced Overload Induction (EOI) | |||
Offuscamento incrementale | |||
Offuscamento semplice di DLL satellite | |||
Crittografia delle stringhe | |||
Collegamento di assembly | |||
Supporto per eventi pre e post generazione | |||
Assegnazione automatica di nuove firme agli assembly con nome sicuro | |||
Integrazione con MSBuild | |||
Applicazione di filigrane al software | |||
Esecuzione indipendente da Visual Studio | |||
Diversi schemi di ridenominazione | |||
Supporto per debug PDB | |||
Prefisso di ridenominazione | |||
Supporto di assembly .NET C++ | |||
Conversione automatica dell'analisi dello stack | |||
File di report XML/HTML | |||
Supporto per tipi e metodi generici | |||
Integrazione con script di generazione | |||
Integrazione completa con Visual Studio | |||
Funzionalità di Business Intelligence per il runtime con segnale SO | |||
Rilevamento e notifica della manomissione delle applicazioni con il segnale SO | |||
Offuscamento tra assembly | |||
Rimozione di metadati non utilizzati | |||
Ridenominazione | |||
Supporto per offuscamento dichiarativo |
© 2002-2007 PreEmptive Solutions. Tutti i diritti riservati.