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.



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.



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.



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.



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.



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.



I comandi di configurazione nella tavolozza comandi
| Comando | Effetto |
|---|---|
| Offuscamento: Imposta unione nell’assembly principale | Unisce 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:
| Livello | Protezione |
|---|---|
| Leggero | Ridenominazione di tipi, metodi, campi, proprietà ed eventi. Il flusso di controllo, le funzioni di cifratura e le protezioni anti-analisi sono disattivati. |
| Bilanciato | Ridenominazione, offuscamento del flusso di controllo con l’algoritmo goto, cifratura delle stringhe e soppressione di ILDASM. |
| Massimo | Ridenominazione, 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.