Skip to Content
Nuova versione 12 disponibile 🎉

Impostazioni del target

Ogni target ha le proprie impostazioni di Babel Obfuscator. Il pannello delle proprietà le modifica un target alla volta; i comandi di configurazione e i livelli di protezione ne cambiano molte in un solo passaggio.

Il pannello delle proprietà

Seleziona un target e fai clic sul pulsante Proprietà in alto a destra nella barra degli strumenti, premi Enter su un nodo selezionato oppure scegli Proprietà nel menu di un nodo o di una riga. Il pannello si ancora a destra e ha come titolo Proprietà assembly con il nome del target. Ha due schede: Impostazioni e Regole XML.

La scheda Impostazioni elenca tutte le opzioni di Babel Obfuscator del target selezionato, raggruppate in File map, Ridenominazione, Flusso di controllo, Cifratura codice, Ottimizzazione, Firma e protezione, File e dipendenze, Output & diagnostics e Advanced. Ogni gruppo indica quante opzioni contiene e può essere compresso. Digita in Cerca un’impostazione per filtrare l’elenco.

Pannello delle proprietà del target BubbleBurst.exe aperto accanto al canvas sulla scheda Settings, con la casella di ricerca Find a setting, il gruppo Map files con Writes its rename map selezionato e il gruppo Renaming con Flatten Namespaces, Unicode Normalization e Detect If ObfuscatedPannello delle proprietà del target BubbleBurst.exe aperto accanto al canvas sulla scheda Settings, con la casella di ricerca Find a setting, il gruppo Map files con Writes its rename map selezionato e il gruppo Renaming con Flatten Namespaces, Unicode Normalization e Detect If ObfuscatedPannello delle proprietà del target BubbleBurst.exe aperto accanto al canvas sulla scheda Settings, con la casella di ricerca Find a setting, il gruppo Map files con Writes its rename map selezionato e il gruppo Renaming con Flatten Namespaces, Unicode Normalization e Detect If Obfuscated

Il pannello delle proprietà del target selezionato

Le impostazioni usano i nomi delle opzioni del task MSBuild, quindi il loro funzionamento è descritto nel riferimento del task Babel e nelle pagine delle singole protezioni. Ogni opzione ha un controllo adatto al suo tipo: caselle di controllo per gli interruttori, elenchi per gli algoritmi, selettori di file e cartelle per i percorsi, editor per i filtri e per le mappe di proprietà. Un elenco impostato su Predefinito lascia l’opzione fuori dal progetto, così il motore usa il proprio valore predefinito. Le modifiche si applicano solo al target selezionato; per modificare più target insieme, usa la griglia.

Pannello delle proprietà sul gruppo Code encryption: String Encryption abilitata, Msil Encryption abilitata con il filtro .*, Dynamic Proxy Call Filters impostato su ICollection.* e Value Encryption con int32, int64, single, double e array abilitatiPannello delle proprietà sul gruppo Code encryption: String Encryption abilitata, Msil Encryption abilitata con il filtro .*, Dynamic Proxy Call Filters impostato su ICollection.* e Value Encryption con int32, int64, single, double e array abilitatiPannello delle proprietà sul gruppo Code encryption: String Encryption abilitata, Msil Encryption abilitata con il filtro .*, Dynamic Proxy Call Filters impostato su ICollection.* e Value Encryption con int32, int64, single, double e array abilitati

Impostazioni di cifratura del codice: cifratura di stringhe, MSIL e valori

Le opzioni composte, come Control Flow Obfuscation, mostrano un controllo per ogni proprietà. L’immagine seguente mostra gli interruttori del flusso di controllo. L’ultimo, chain, attiva l’algoritmo chained state dell’edizione Ultimate.

Pannello delle proprietà filtrato per ControlFlow: la mappa Control Flow Obfuscation con enable, goto, switch, case, if, call e value abilitati, token e underflow disabilitati e chain lasciato al valore predefinitoPannello delle proprietà filtrato per ControlFlow: la mappa Control Flow Obfuscation con enable, goto, switch, case, if, call e value abilitati, token e underflow disabilitati e chain lasciato al valore predefinitoPannello delle proprietà filtrato per ControlFlow: la mappa Control Flow Obfuscation con enable, goto, switch, case, if, call e value abilitati, token e underflow disabilitati e chain lasciato al valore predefinito

Proprietà di Control Flow Obfuscation

Le password, come quella di una chiave di firma o di un file map, vengono conservate solo per la sessione corrente. Non vengono mai scritte nel file di progetto, quindi dopo un riavvio devi inserirle di nuovo. Quando il motore ha bisogno di una password durante un’esecuzione, Babel Desktop te la chiede.

File map

Il gruppo File map in cima alla scheda Impostazioni raccoglie le impostazioni relative alle mappe del target selezionato:

  • Scrive la sua map di rinomina attiva o disattiva il file map del target. La riga sottostante indica dove viene scritta la mappa: Accanto all’assembly offuscato per impostazione predefinita, oppure il nome del file che hai scelto con Cambia….
  • Map da altri target elenca i collegamenti map che terminano su questo target. Fai clic sul nome di un target per selezionarlo, oppure sulla sua × per rimuovere il collegamento.
  • Altri file di map elenca le mappe che questo target legge e che nessun target del progetto scrive, come la mappa di una libreria offuscata in una build precedente. Aggiungi file di map… ne aggiunge una e Rimuovi la toglie.
Proprietà del target CrossAssembly1App.dll sulla scheda Settings: il gruppo Map files con Writes its rename map selezionato e il file CrossAssembly1App.dll.map.xml con un pulsante Change..., CrossAssembly1.dll elencato sotto Maps from other targets con un pulsante di rimozione, e il pulsante Add map file... sotto Other map filesProprietà del target CrossAssembly1App.dll sulla scheda Settings: il gruppo Map files con Writes its rename map selezionato e il file CrossAssembly1App.dll.map.xml con un pulsante Change..., CrossAssembly1.dll elencato sotto Maps from other targets con un pulsante di rimozione, e il pulsante Add map file... sotto Other map filesProprietà del target CrossAssembly1App.dll sulla scheda Settings: il gruppo Map files con Writes its rename map selezionato e il file CrossAssembly1App.dll.map.xml con un pulsante Change..., CrossAssembly1.dll elencato sotto Maps from other targets con un pulsante di rimozione, e il pulsante Add map file... sotto Other map files

Il gruppo File map di un target che legge la mappa di una libreria

Regole XML

La scheda Regole XML modifica le regole di offuscamento XML inline del target selezionato. L’editor evidenzia la sintassi XML e Valida controlla le regole rispetto allo schema delle regole di Babel, indicando riga e colonna di ogni errore. Apri XML carica un file di regole nell’editor, Salva file XML scrive il contenuto dell’editor in un file e Applica all’assembly memorizza le regole nel target. Le regole inline vengono salvate nel file di progetto.

Scheda XML rules del target con una regola inline per l'assembly unito BubbleBurst.View che imposta la proprietà Dynamic Proxy Call Filters su IEnumerator.*, e i pulsanti Open XML, Validate, Save XML file e Apply to assemblyScheda XML rules del target con una regola inline per l'assembly unito BubbleBurst.View che imposta la proprietà Dynamic Proxy Call Filters su IEnumerator.*, e i pulsanti Open XML, Validate, Save XML file e Apply to assemblyScheda XML rules del target con una regola inline per l'assembly unito BubbleBurst.View che imposta la proprietà Dynamic Proxy Call Filters su IEnumerator.*, e i pulsanti Open XML, Validate, Save XML file e Apply to assembly

Regole XML inline di un target

Finché ci sono regole non ancora applicate, il pannello resta sullo stesso target: applicale, oppure scartale con Impostazioni: Annulla modifiche non applicate e ricarica nella tavolozza comandi, prima di selezionare un altro target o di eseguire il progetto. I file di regole esterni al progetto sono elencati nella scheda Regole dei dettagli della griglia.

Plugin del motore

I plugin di Babel Obfuscator si impostano per ogni target con Plugin del motore: Configura percorsi DLL nella tavolozza comandi, oppure nella scheda Plugin dei dettagli della griglia. Plugin del motore: Rileva nomi degli argomenti legge i nomi degli argomenti dichiarati da un plugin, così puoi compilarne gli argomenti. I plugin sono codice .NET eseguito all’interno del motore, quindi usa solo plugin di cui ti fidi.

Comandi di configurazione

I due comandi di configurazione configurano un intero progetto in un solo passaggio, e Offuscamento: Imposta livello… applica un livello di protezione al target selezionato. Aggiungi prima gli assembly, poi esegui il comando adatto all’applicazione. Tutti e tre si trovano nella tavolozza comandi; i due comandi di configurazione sono anche nella barra degli strumenti della griglia, come Imposta offuscamento pubblico e Imposta unione.

Tavolozza comandi filtrata per Obfuscation: Set, con i comandi Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly e Obfuscation: Set level...Tavolozza comandi filtrata per Obfuscation: Set, con i comandi Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly e Obfuscation: Set level...Tavolozza comandi filtrata per Obfuscation: Set, con i comandi Obfuscation: Setup public obfuscation (all assemblies), Obfuscation: Setup merge into main assembly e Obfuscation: Set level...

I comandi di configurazione nella tavolozza comandi

ComandoEffetto
Offuscamento: Imposta unione nell’assembly principaleUnisce tutti gli altri target all’assembly principale, così il progetto produce un solo file di output. L’assembly principale è l’unico .exe del progetto, oppure il primo target quando non ce n’è nessuno o ce n’è più di uno. Un assembly che il motore non può unire viene lasciato com’è.
Offuscamento: Imposta offuscamento pubblico (tutti gli assembly)Prepara un insieme di assembly distribuiti insieme perché i loro simboli pubblici vengano rinominati. Ogni target riceve una regola XML chiamata obfuscate public e scrive la propria mappa di ridenominazione, e un target che ha un altro target tra le proprie dipendenze di unione, incorporamento o riferimento ne legge la mappa tramite un collegamento map.
Offuscamento: Imposta livello…Applica al target selezionato uno dei tre livelli di protezione.

I due comandi di configurazione saltano i target di tipo pacchetto (.apk, .appx e .xap). Nessuno dei tre viene eseguito mentre è in corso un’elaborazione o c’è una modifica in attesa di essere applicata. Modificano il progetto aperto senza salvarlo, così puoi prima controllare il risultato sul canvas, nella griglia e nel pannello delle proprietà.

Livelli di protezione

Offuscamento: Imposta livello… nella tavolozza comandi applica un livello al target selezionato; Imposta livello di offuscamento nel menu della riga della griglia lo applica a tutte le righe selezionate. I livelli impostano queste opzioni e lasciano invariate le altre:

LivelloProtezione
LeggeroRidenominazione di tipi, metodi, campi, proprietà ed eventi. Il flusso di controllo, le funzioni di cifratura e le protezioni anti-analisi sono disattivati.
BilanciatoRidenominazione, offuscamento del flusso di controllo con l’algoritmo goto, cifratura delle stringhe e soppressione di ILDASM.
MassimoRidenominazione, offuscamento del flusso di controllo con goto, switch, case, if e chained state, cifratura delle stringhe con l’algoritmo stream, cifratura dei valori, cifratura MSIL, rilevamento delle manomissioni, protezione dal debug e soppressione di ILDASM. Se la licenza non include l’algoritmo stream, viene usata la cifratura delle stringhe predefinita.

Se applichi un livello più basso dopo uno più alto, le protezioni aggiuntive vengono disattivate. Un livello è un punto di partenza: in seguito puoi cambiare qualsiasi singola opzione.

Massimo attiva la cifratura MSIL senza filtro, quindi cifra solo i metodi che selezioni con una regola XML o con l’attributo Obfuscation. Per cifrare per namespace o per tipo, aggiungi un filtro a Msil Encryption nel gruppo Cifratura codice. Vedi Cifratura del codice.

Un livello non tocca la ridenominazione dei simboli pubblici, i file map, l’unione né la firma. Queste impostazioni dipendono da come vengono distribuiti gli assembly, ed è a questo che servono i comandi di configurazione.

Last updated on