Riferimento del task Babel
Tutti gli attributi del task Babel di MSBuild, raggruppati per funzionalità , con l’opzione della riga di comando a cui corrisponde ciascuno.
Il task Babel espone un attributo per ogni opzione dello strumento da riga di comando e gli passa i valori degli attributi senza modificarli. Un attributo booleano accetta true o false. Quando l’opzione della riga di comando accetta un argomento, lo stesso argomento può essere passato come valore dell’attributo: un attributo contrassegnato come Booleano / Stringa accetta quindi entrambe le forme. Gli attributi di tipo elenco accettano più valori separati da ;. Gli attributi non impostati mantengono i valori predefiniti riportati nelle tabelle.
Quando usi il pacchetto NuGet di Babel Obfuscator, ogni attributo viene impostato tramite una proprietà o un elemento MSBuild; vedi la tabella Corrispondenza delle proprietà del riferimento del pacchetto.
La versione 12.0 aggiunge gli attributi SingleFile, TrustedSigner, TrustedBundle e TrustedTeam, che controllano le verifiche di integrità del pacchetto sui dispositivi mobili eseguite dal rilevamento delle manomissioni, e il valore stream di StringEncryption. Nelle tabelle che seguono sono contrassegnati con 12.0.
Varie
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
BabelDirectory | Stringa | Impostazione legacy che indica la cartella che contiene babel.exe. Il task fallisce se l’eseguibile non si trova lì. Usa di preferenza ToolPath. | ||
DbgHelpDllDir | Stringa | --dbghelpdlldir | Percorso della cartella che contiene dbghelp.dll. | |
DetectIfObfuscated | Booleano / Stringa | false | --isobfuscated | Indica se rilevare che l’assembly target è già offuscato. Il valore warn genera un avviso e prosegue, exit si ferma senza elaborare l’assembly. |
EnableObfuscationAgent | Booleano | true | --agent | Indica se eseguire l’Obfuscation Agent, che analizza l’assembly ed esclude dall’offuscamento i simboli che, se offuscati, ne comprometterebbero il funzionamento. |
License | Stringa | --license | Percorso completo del file di licenza, oppure elenco di cartelle in cui cercare i file di licenza. | |
NoConfiguration | Booleano | false | --noconfig | Indica se ignorare i valori predefiniti memorizzati nel file di configurazione di Babel. |
NoWarnings | Stringa | --nowarn | Elenco dei codici di avviso da ignorare. | |
ProvideCommandLineArgs | Booleano | false | Indica se scrivere nel log la riga di comando passata a Babel e restituirla nell’elemento di output CommandLineArgs. | |
QuickRules | Stringa | --quickrule | Definizioni delle regole rapide. | |
RandomSeed | Stringa | --randomseed | Seme del generatore di numeri casuali usato durante l’offuscamento. | |
RemoveKey | Booleano | false | --removekey | Indica se rimuovere il nome sicuro dall’assembly offuscato. |
SatelliteAssemblies | Stringa | --satellite | Elenco dei file degli assembly satellite da elaborare. | |
SearchDirectories | Stringa | --addsearch | Elenco delle cartelle in cui vengono cercati gli assembly referenziati. References è accettato come alias. | |
SearchSatelliteAssemblies | Booleano | true | --satellite | Indica se cercare ed elaborare gli assembly satellite del target. |
ShowLogo | Booleano | true | --logo | Indica se visualizzare la versione di Babel e le informazioni sul copyright. |
ShowStatistics | Booleano | true | --statistics | Indica se visualizzare le statistiche di offuscamento al termine del processo. Solo booleano: usa StatisticsFile per salvare le statistiche in un file. |
StatisticsFile | Stringa | --statistics | Percorso del file in cui vengono salvate le statistiche di offuscamento. Ignorato quando ShowStatistics è false. | |
TargetAssemblyName | Stringa | nochange | --assemblyname | Origine del nome dell’assembly target: nochange, inputfilename, outputfilename o name=<assembly name>. |
ToolExe | Stringa | Nome dell’eseguibile di Babel, babel.exe o babel.dll. | ||
ToolPath | Stringa | Cartella dell’eseguibile di Babel. | ||
Trace | Stringa | --trace | Elenco di espressioni regolari che selezionano i simboli da tracciare. La traccia mostra perché un simbolo viene offuscato oppure no e aiuta a eseguire il debug delle regole di offuscamento. | |
Use | Chiave=Valore | --use | Opzioni di utilizzo come coppie chiave-valore. | |
VerboseLevel | Intero | 1 | --verbose | Livello di dettaglio dell’output della console. 0 disabilita i messaggi, i valori superiori a 10 mostrano le informazioni di debug. |
WarningsAsErrors | Stringa | --warnaserror | Elenco dei codici di avviso segnalati come errori. Un errore interrompe il processo di offuscamento. | |
WarningsAsInfos | Stringa | --warnasinfo | Elenco dei codici di avviso segnalati come messaggi informativi. | |
XmlRules | Stringa | Elementi di regole XML inline, vedi Regole XML. |
File di input
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
InputFile | Stringa | Percorso dell’assembly da offuscare. | ||
KeyContainer | Stringa | --keyname | Nome del contenitore della chiave con nome sicuro (solo Windows). | |
KeyFile | Stringa | --keyfile | Percorso del file della chiave con nome sicuro usata per firmare l’assembly offuscato. | |
KeyPwd | Stringa | --keypwd | Password del file della chiave con nome sicuro o del certificato. | |
MapInFiles | Stringa | --mapin | Elenco dei file map XML di assembly già offuscati, usati per rinominare i riferimenti ai loro simboli. | |
Project | Stringa | --project | Percorso di un file di progetto di offuscamento di Babel. | |
RulesFiles | Stringa | --rules | Elenco dei file di regole XML da elaborare. |
File di output
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
GenerateLogFile | Booleano | false | --logfile | Indica se generare un log di offuscamento. Il nome predefinito del file di log è <target assembly>.log. |
GenerateMapOutFile | Booleano | false | --mapout | Indica se generare un file map di offuscamento. Il nome predefinito del file map è <target assembly>.xml.map. |
LogFile | Stringa | --logfile | Percorso del file di log dell’offuscamento. | |
MakeProject | Stringa | --makeproject | Percorso del file di progetto MSBuild creato a partire dalle impostazioni del task. | |
MapOutFile | Stringa | --mapout | Percorso del file map di offuscamento. | |
OutputFile | Stringa | --output | Percorso dell’assembly offuscato. | |
PdbFile | Stringa | --pdb | Percorso del file dei simboli di debug. | |
PdbPwd | Stringa | --pdbpwd | Password del file dei simboli di debug. |
Plugin
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
Plugins | Stringa | --plugin | Elenco dei file degli assembly dei plugin. | |
PluginsArguments | Chiave=Valore | --argument | Argomenti dei plugin come coppie chiave-valore. |
Unione e incorporamento
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
CopyAttributes | Booleano / Stringa | false | --copyattrs | Indica se gli attributi a livello di assembly degli assembly uniti vengono copiati nell’assembly target. Un’espressione regolare seleziona gli attributi duplicati che possono essere uniti. |
DependenciesManifest | Booleano | true | --jsonmanifest | Indica se aggiornare il manifesto delle dipendenze .deps.json dell’assembly target quando vengono uniti o incorporati degli assembly. |
EmbedAssemblies | Stringa | --embed | Elenco dei file degli assembly da incorporare nell’assembly target. | |
Internalize | Booleano | false | --internalize | Indica se la visibilità dei tipi uniti viene limitata all’assembly target. |
MergeAssemblies | Stringa | Elenco dei file degli assembly da unire all’assembly target. |
Ridenominazione
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
FlattenNamespaces | Booleano / Stringa | true | --flatns | Indica se spostare i tipi rinominati nel namespace globale. Una stringa imposta invece un nome di namespace comune per i tipi rinominati. |
NameLength | Intero / Chiave=Valore | --namelength | Lunghezza minima dei nomi offuscati. Le coppie chiave-valore assegnano la lunghezza a un determinato tipo di simbolo. | |
NamePrefix | Stringa / Chiave=Valore | --nameprefix | Prefisso dei nomi offuscati, $name o una stringa qualsiasi. Le coppie chiave-valore assegnano il prefisso a un determinato tipo di simbolo. | |
ObfuscateEvents | Booleano | true | --events | Indica se rinominare gli eventi. |
ObfuscateFields | Booleano | true | --fields | Indica se rinominare i campi. |
ObfuscateMethods | Booleano | true | --methods | Indica se rinominare i metodi. |
ObfuscateParameters | Booleano | true | --parameters | Indica se rinominare i parametri dei metodi. |
ObfuscateProperties | Booleano | true | --properties | Indica se rinominare le proprietà . |
ObfuscateTypes | Booleano | true | --types | Indica se rinominare i tipi. |
ObfuscateXaml | Booleano / Chiave=Valore | false | --xaml | Indica se rinominare i simboli referenziati dalle risorse XAML e BAML. Le coppie chiave-valore configurano la ridenominazione. |
OverloadedRenaming | Booleano / Chiave=Valore | false | --overloaded | Indica se riutilizzare lo stesso nome per membri con firme diverse. Le coppie chiave-valore selezionano i membri a cui applicare l’overload. |
UnicodeNormalization | Booleano / Stringa | false | --unicode | Indica se generare i nomi usando caratteri Unicode. Quando è disabilitato, vengono usati caratteri ASCII. Un elenco di caratteri o intervalli separati da virgole limita il set di caratteri. |
VirtualFunctions | Booleano / Chiave=Valore | true | --virtual | Indica se rinominare i membri virtuali. Le coppie chiave-valore configurano la ridenominazione degli override esterni. |
XmlDocFiles | Stringa | --xmldoc | Elenco dei file di documentazione XML da elaborare insieme all’assembly. XmlDoc è accettato come alias legacy. |
Offuscamento del flusso di controllo
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
ControlFlowObfuscation | Booleano / Chiave=Valore | false | --controlflow | Indica se offuscare il flusso di controllo dei metodi. Le coppie chiave-valore selezionano gli algoritmi, compreso chain=on per Chained State Ultimate. |
ControlFlowIterations | Intero | 3 | --iterations | Numero di iterazioni degli algoritmi di offuscamento del flusso di controllo. 0 disabilita l’offuscamento del flusso di controllo. ILIterations e Iterations sono accettati come alias. |
EmitInvalidOpcodes | Booleano / Stringa | false | --invalidopcodes | Indica se emettere opcode MSIL non validi, che rendono l’assembly non verificabile. Il valore enhanced inserisce ulteriori opcode non validi. |
Cifratura e protezione
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
DebuggingProtection | Booleano | false | --antidebugging | Indica se abilitare la protezione dal debug. |
DynamicProxy | Booleano / Stringa | false | --proxy | Indica se racchiudere le chiamate ai metodi in proxy generati dinamicamente. Il valore seleziona le chiamate da far passare tramite proxy: internal, external o all. |
DynamicProxyCallFilters | Stringa | --proxy | Elenco di espressioni regolari che selezionano le chiamate ai metodi da far passare tramite proxy. | |
MsilEncryption | Booleano / Stringa | false | --msilencryption | Indica se cifrare il codice MSIL dei metodi. Le espressioni regolari selezionano i metodi da cifrare in base alla firma. |
ResourceEncryption | Booleano / Chiave=Valore | false | --resourceencryption | Indica se cifrare le risorse gestite. Le coppie chiave-valore abilitano separatamente la cifratura e la compressione. |
SingleFile 12.0 | Booleano | false | --singlefile | Segnala che il target viene pubblicato come applicazione a file singolo, sottoposta a trimming o NativeAOT. Sui target desktop il controllo del rilevamento delle manomissioni è inattivo per una pubblicazione di questo tipo, e Babel emette un avviso quando viene richiesto. |
StringEncryption | Booleano / Stringa | false | --stringencryption | Indica se cifrare le stringhe utente. Il valore seleziona l’algoritmo: xor, hash o stream 12.0 Ultimate. |
SuppressIldasm | Booleano | false | --ildasm | Indica se impedire a ILDASM di disassemblare l’assembly offuscato. |
SuppressReflection | Booleano / Intero | false | --reflection | Indica se emettere metadati non validi che bloccano gli strumenti basati sulla reflection. Un intero imposta il livello: più alto è il livello, più metadati non validi vengono generati. |
TamperingDetection | Booleano | false | --tamperingdetection | Indica se abilitare il rilevamento delle manomissioni. |
TrustedBundle 12.0 Ultimate | Stringa | --trustedbundle | Identificatore del bundle iOS attendibile (CFBundleIdentifier), fissato dal controllo di integrità del pacchetto su iOS. | |
TrustedSigner 12.0 Ultimate | Stringa | --trustedsigner | Elenco delle impronte SHA-256, di 64 caratteri esadecimali ciascuna, dei certificati di firma attendibili dell’APK Android, fissati dal controllo di integrità del pacchetto su Android. | |
TrustedTeam 12.0 Ultimate | Stringa | --trustedteam | Identificatore del team Apple Developer attendibile, fissato dal controllo di integrità del pacchetto su iOS. | |
ValueEncryption | Booleano / Chiave=Valore | false | --valueencryption | Indica se cifrare i valori costanti e gli array. Le coppie chiave-valore selezionano i tipi di valore da cifrare. |
Ottimizzazioni
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
CleanAttributes | Booleano / Stringa | false | --cleanattrs | Indica se rimuovere gli attributi indesiderati. Le espressioni regolari selezionano i nomi completi dei tipi di attributo da rimuovere. |
ConstRemoval | Booleano | false | --constremoval | Indica se rimuovere i campi costanti. |
DeadCodeElimination | Booleano / Stringa | false | --deadcode | Indica se rimuovere i metodi, le proprietà e gli eventi non usati dall’applicazione. Le espressioni regolari impostano i punti di ingresso da cui parte la ricerca. |
DisgregateRemoval | Booleano | false | --disgregateremoval | Indica se rimuovere i metadati di proprietà ed eventi. |
EnumRemoval | Booleano | false | --enumremoval | Indica se rimuovere i tipi System.Enum. |
InlineExpansion | Booleano | false | --inlineexpansion | Indica se sostituire con il corpo del metodo le chiamate ai metodi contrassegnati per l’espansione inline. |
SealClasses | Booleano | false | --seal | Indica se sigillare le classi che non sono usate in nessuna catena di ereditarietà . |
Generazione del codice
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
AddReferences | Stringa | --addreference | Elenco degli assembly da aggiungere come riferimenti dell’assembly target. | |
Framework | Stringa | Nome del framework di destinazione imposto per l’assembly elaborato. | ||
GenerateDebug | Booleano / Stringa | false | --debug | Indica se generare i simboli di debug dell’assembly offuscato. Come valore puoi specificare il percorso di un archivio simboli. |
Instrument | Booleano / Stringa | false | --instrument | Indica se strumentare il codice. Le espressioni regolari selezionano i nomi completi dei metodi da strumentare. |
InstrumentEmptyMethods | Booleano | false | --emptymethods | Indica se strumentare i metodi con il corpo vuoto. |
ModuleInitializer | Booleano / Stringa | false | --moduleinitializer | Indica se aggiungere all’assembly target il codice dell’inizializzatore di modulo. |
ModuleInitializerTarget | Stringa | --moduleinitializer | Firma del metodo statico, senza parametri, chiamato dopo il caricamento del modulo. | |
ModuleVersionId | Booleano / Stringa | false | --moduleversionid | Indica se impostare l’identificatore di versione del modulo (MVID) dell’assembly offuscato. Una stringa GUID imposta il valore, altrimenti ne viene generato uno casuale. |
Pacchetti
| Attributo | Tipo | Predefinito | Riga di comando | Descrizione |
|---|---|---|---|---|
AndroidSigningKeyAlias | Stringa | --keyalias | Alias della chiave nel keystore Android (pacchetti APK). | |
AndroidSigningKeyPass | Stringa | --keypass | Password della chiave nel keystore Android (pacchetti APK). | |
AndroidSigningKeyStore | Stringa | --keystore | File del keystore Android (pacchetti APK). | |
AndroidSigningStorePass | Stringa | --storepass | Password del keystore Android (pacchetti APK). | |
RemoveFiles | Stringa | --remove | Elenco degli assembly distribuiti da rimuovere dal pacchetto. | |
SkipFiles | Stringa | --skip | Elenco degli assembly distribuiti che non vengono offuscati. | |
TakeFiles | Stringa | --take | Elenco degli assembly distribuiti da offuscare. | |
XapCompressionLevel | Intero | 6 | --compress | Livello di compressione del pacchetto, da 0 (nessuna compressione) a 9 (pacchetti XAP). |
Output del task
| Output | Descrizione |
|---|---|
CommandLineArgs | La riga di comando passata a Babel, disponibile quando ProvideCommandLineArgs è true. |
ExitCode | Il codice di uscita restituito da Babel. |
Esempio
Il task seguente offusca l’assembly intermedio di un progetto .NET MAUI per Android con la cifratura delle stringhe STREAM e il rilevamento delle manomissioni fissato sul certificato di firma dell’APK, e acquisisce la riga di comando passata a Babel:
<Target Name="Obfuscate" AfterTargets="Compile" Condition="'$(DesignTimeBuild)' != 'true'">
<Babel InputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)"
OutputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)"
StringEncryption="stream"
ControlFlowObfuscation="true"
ControlFlowIterations="3"
TamperingDetection="true"
TrustedSigner="2924C53EE9C511E9F26E0720FD8151064F7621681667D7AB1899E551CDB25104"
ProvideCommandLineArgs="true">
<Output TaskParameter="CommandLineArgs" ItemName="BabelCommandLineArgs" />
</Babel>
<Message Importance="high" Text="@(BabelCommandLineArgs, ' ')" />
</Target>