Skip to Content
Nuova versione 12 disponibile 🎉
ObfuscatorRegole di offuscamentoAttributi personalizzati

Attributi personalizzati

Babel supporta l’offuscamento dichiarativo tramite gli attributi personalizzati System.Reflection.ObfuscationAttribute e System.Reflection.ObfuscateAssemblyAttribute forniti da .NET Framework e .NET.

L’attributo ObfuscateAssembly

System.Reflection.ObfuscateAssemblyAttribute è un attributo a livello di assembly che indica a Babel Obfuscator di usare le regole di offuscamento riservate agli assembly privati.

Un assembly privato è un assembly che non verrà usato come libreria: nessun altro componente software lo userà. Babel offusca completamente gli assembly privati, rinominandone tutti i simboli pubblici.

[assembly: ObfuscateAssembly(true)]

L’argomento booleano del costruttore assemblyIsPrivate=true indica a Babel che l’assembly è usato nell’ambito di una sola applicazione e che l’interfaccia pubblica può essere rinominata senza rischi.

L’attributo Obfuscation

L’attributo System.Reflection.ObfuscationAttribute può essere applicato ai membri di un assembly, come tipi, metodi, eventi, proprietà e campi, per configurare l’azione da eseguire per una specifica funzionalità di offuscamento.

L’attributo Obfuscation ha le seguenti proprietà:

Feature

La proprietà Feature associa un valore stringa a una specifica funzionalità dell’offuscatore o a un elenco di funzionalità. Il valore predefinito della proprietà Feature è “all”.

Babel usa “all” per indicare l’insieme completo delle funzionalità disponibili e “default” per indicare la funzionalità di ridenominazione.

Per saperne di piĂą, consulta la tabella delle funzionalitĂ  di offuscamento.

Exclude

Indica se la funzionalitĂ  di offuscamento deve essere esclusa per il membro associato.

ApplyToMembers

Specifica se l’azione eseguita dall’offuscatore per il tipo associato deve essere applicata a tutti i suoi membri.

StripAfterObfuscation

Specifica se l’attributo deve essere rimosso dopo l’elaborazione.

Il seguente esempio di codice mostra come usare ObfuscationAttribute su un metodo per abilitare la cifratura del codice:

[Obfuscation(Feature="msil encryption", Exclude=false)] public string DoSomething() {

Sintassi estesa delle funzionalitĂ 

Babel Obfuscator supporta una sintassi estesa per le stringhe delle funzionalitĂ , che permette di impostare le proprietĂ  di una funzionalitĂ  come elenco di coppie chiave-valore dopo il nome di ciascuna funzionalitĂ .

[Obfuscation(Feature="msil encryption:source=opt;cache=true", Exclude=false)]#

La sintassi estesa di Feature permette di impostare ObfuscationAttribute a livello di assembly per configurare le funzionalità dell’intero assembly:

Ridenominazione

[assembly: Obfuscation(Feature="renaming:flatten namespaces=ACME.Test.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:flattenNamespaces=ACME.Data.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:internalize=true;rename parameters=true", Exclude=false)] [assembly: Obfuscation(Feature="renaming:overloaded=true;unicode=false", Exclude=false)] [assembly: Obfuscation(Feature="renaming:name length=5;name prefix=Acme_", Exclude=false)]

Obfuscation Agent

Disabilita l’Obfuscation Agent per i task Serializable types e Reflected enums.

[assembly: Obfuscation(Feature="agent:tasknamelist=Serializable types,Reflected enums", Exclude=true)]

Cifratura dei valori

Cifra i valori e gli array dei metodi con un numero di istruzioni compreso tra 10 e 100.

[assembly: Obfuscation(Feature="value encryption:min instruction count=10; max instruction count=100", Exclude=false)]

L’attributo Obfuscation da solo non basta ad attivare la funzionalità scelta. L’attributo funziona solo se la funzionalità è abilitata globalmente nella configurazione.

Altri esempi

Non offuscare il codice generato dal compilatore.

[assembly: Obfuscation(Feature="all:compilergenerated=true", Exclude=true)]
Last updated on