Skip to Content
Nuova versione 12 disponibile 🎉
ObfuscatorTask MSBuildRiferimento del task Babel

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

AttributoTipoPredefinitoRiga di comandoDescrizione
BabelDirectoryStringaImpostazione legacy che indica la cartella che contiene babel.exe. Il task fallisce se l’eseguibile non si trova lì. Usa di preferenza ToolPath.
DbgHelpDllDirStringa--dbghelpdlldirPercorso della cartella che contiene dbghelp.dll.
DetectIfObfuscatedBooleano / Stringafalse--isobfuscatedIndica se rilevare che l’assembly target è già offuscato. Il valore warn genera un avviso e prosegue, exit si ferma senza elaborare l’assembly.
EnableObfuscationAgentBooleanotrue--agentIndica se eseguire l’Obfuscation Agent, che analizza l’assembly ed esclude dall’offuscamento i simboli che, se offuscati, ne comprometterebbero il funzionamento.
LicenseStringa--licensePercorso completo del file di licenza, oppure elenco di cartelle in cui cercare i file di licenza.
NoConfigurationBooleanofalse--noconfigIndica se ignorare i valori predefiniti memorizzati nel file di configurazione di Babel.
NoWarningsStringa--nowarnElenco dei codici di avviso da ignorare.
ProvideCommandLineArgsBooleanofalseIndica se scrivere nel log la riga di comando passata a Babel e restituirla nell’elemento di output CommandLineArgs.
QuickRulesStringa--quickruleDefinizioni delle regole rapide.
RandomSeedStringa--randomseedSeme del generatore di numeri casuali usato durante l’offuscamento.
RemoveKeyBooleanofalse--removekeyIndica se rimuovere il nome sicuro dall’assembly offuscato.
SatelliteAssembliesStringa--satelliteElenco dei file degli assembly satellite da elaborare.
SearchDirectoriesStringa--addsearchElenco delle cartelle in cui vengono cercati gli assembly referenziati. References è accettato come alias.
SearchSatelliteAssembliesBooleanotrue--satelliteIndica se cercare ed elaborare gli assembly satellite del target.
ShowLogoBooleanotrue--logoIndica se visualizzare la versione di Babel e le informazioni sul copyright.
ShowStatisticsBooleanotrue--statisticsIndica se visualizzare le statistiche di offuscamento al termine del processo. Solo booleano: usa StatisticsFile per salvare le statistiche in un file.
StatisticsFileStringa--statisticsPercorso del file in cui vengono salvate le statistiche di offuscamento. Ignorato quando ShowStatistics è false.
TargetAssemblyNameStringanochange--assemblynameOrigine del nome dell’assembly target: nochange, inputfilename, outputfilename o name=<assembly name>.
ToolExeStringaNome dell’eseguibile di Babel, babel.exe o babel.dll.
ToolPathStringaCartella dell’eseguibile di Babel.
TraceStringa--traceElenco 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.
UseChiave=Valore--useOpzioni di utilizzo come coppie chiave-valore.
VerboseLevelIntero1--verboseLivello di dettaglio dell’output della console. 0 disabilita i messaggi, i valori superiori a 10 mostrano le informazioni di debug.
WarningsAsErrorsStringa--warnaserrorElenco dei codici di avviso segnalati come errori. Un errore interrompe il processo di offuscamento.
WarningsAsInfosStringa--warnasinfoElenco dei codici di avviso segnalati come messaggi informativi.
XmlRulesStringaElementi di regole XML inline, vedi Regole XML.

File di input

AttributoTipoPredefinitoRiga di comandoDescrizione
InputFileStringaPercorso dell’assembly da offuscare.
KeyContainerStringa--keynameNome del contenitore della chiave con nome sicuro (solo Windows).
KeyFileStringa--keyfilePercorso del file della chiave con nome sicuro usata per firmare l’assembly offuscato.
KeyPwdStringa--keypwdPassword del file della chiave con nome sicuro o del certificato.
MapInFilesStringa--mapinElenco dei file map XML di assembly già offuscati, usati per rinominare i riferimenti ai loro simboli.
ProjectStringa--projectPercorso di un file di progetto di offuscamento di Babel.
RulesFilesStringa--rulesElenco dei file di regole XML da elaborare.

File di output

AttributoTipoPredefinitoRiga di comandoDescrizione
GenerateLogFileBooleanofalse--logfileIndica se generare un log di offuscamento. Il nome predefinito del file di log è <target assembly>.log.
GenerateMapOutFileBooleanofalse--mapoutIndica se generare un file map di offuscamento. Il nome predefinito del file map è <target assembly>.xml.map.
LogFileStringa--logfilePercorso del file di log dell’offuscamento.
MakeProjectStringa--makeprojectPercorso del file di progetto MSBuild creato a partire dalle impostazioni del task.
MapOutFileStringa--mapoutPercorso del file map di offuscamento.
OutputFileStringa--outputPercorso dell’assembly offuscato.
PdbFileStringa--pdbPercorso del file dei simboli di debug.
PdbPwdStringa--pdbpwdPassword del file dei simboli di debug.

Plugin

AttributoTipoPredefinitoRiga di comandoDescrizione
PluginsStringa--pluginElenco dei file degli assembly dei plugin.
PluginsArgumentsChiave=Valore--argumentArgomenti dei plugin come coppie chiave-valore.

Unione e incorporamento

AttributoTipoPredefinitoRiga di comandoDescrizione
CopyAttributesBooleano / Stringafalse--copyattrsIndica 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.
DependenciesManifestBooleanotrue--jsonmanifestIndica se aggiornare il manifesto delle dipendenze .deps.json dell’assembly target quando vengono uniti o incorporati degli assembly.
EmbedAssembliesStringa--embedElenco dei file degli assembly da incorporare nell’assembly target.
InternalizeBooleanofalse--internalizeIndica se la visibilità dei tipi uniti viene limitata all’assembly target.
MergeAssembliesStringaElenco dei file degli assembly da unire all’assembly target.

Ridenominazione

AttributoTipoPredefinitoRiga di comandoDescrizione
FlattenNamespacesBooleano / Stringatrue--flatnsIndica se spostare i tipi rinominati nel namespace globale. Una stringa imposta invece un nome di namespace comune per i tipi rinominati.
NameLengthIntero / Chiave=Valore--namelengthLunghezza minima dei nomi offuscati. Le coppie chiave-valore assegnano la lunghezza a un determinato tipo di simbolo.
NamePrefixStringa / Chiave=Valore--nameprefixPrefisso dei nomi offuscati, $name o una stringa qualsiasi. Le coppie chiave-valore assegnano il prefisso a un determinato tipo di simbolo.
ObfuscateEventsBooleanotrue--eventsIndica se rinominare gli eventi.
ObfuscateFieldsBooleanotrue--fieldsIndica se rinominare i campi.
ObfuscateMethodsBooleanotrue--methodsIndica se rinominare i metodi.
ObfuscateParametersBooleanotrue--parametersIndica se rinominare i parametri dei metodi.
ObfuscatePropertiesBooleanotrue--propertiesIndica se rinominare le proprietà.
ObfuscateTypesBooleanotrue--typesIndica se rinominare i tipi.
ObfuscateXamlBooleano / Chiave=Valorefalse--xamlIndica se rinominare i simboli referenziati dalle risorse XAML e BAML. Le coppie chiave-valore configurano la ridenominazione.
OverloadedRenamingBooleano / Chiave=Valorefalse--overloadedIndica se riutilizzare lo stesso nome per membri con firme diverse. Le coppie chiave-valore selezionano i membri a cui applicare l’overload.
UnicodeNormalizationBooleano / Stringafalse--unicodeIndica 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.
VirtualFunctionsBooleano / Chiave=Valoretrue--virtualIndica se rinominare i membri virtuali. Le coppie chiave-valore configurano la ridenominazione degli override esterni.
XmlDocFilesStringa--xmldocElenco dei file di documentazione XML da elaborare insieme all’assembly. XmlDoc è accettato come alias legacy.

Offuscamento del flusso di controllo

AttributoTipoPredefinitoRiga di comandoDescrizione
ControlFlowObfuscationBooleano / Chiave=Valorefalse--controlflowIndica se offuscare il flusso di controllo dei metodi. Le coppie chiave-valore selezionano gli algoritmi, compreso chain=on per Chained State Ultimate.
ControlFlowIterationsIntero3--iterationsNumero 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.
EmitInvalidOpcodesBooleano / Stringafalse--invalidopcodesIndica se emettere opcode MSIL non validi, che rendono l’assembly non verificabile. Il valore enhanced inserisce ulteriori opcode non validi.

Cifratura e protezione

AttributoTipoPredefinitoRiga di comandoDescrizione
DebuggingProtectionBooleanofalse--antidebuggingIndica se abilitare la protezione dal debug.
DynamicProxyBooleano / Stringafalse--proxyIndica se racchiudere le chiamate ai metodi in proxy generati dinamicamente. Il valore seleziona le chiamate da far passare tramite proxy: internal, external o all.
DynamicProxyCallFiltersStringa--proxyElenco di espressioni regolari che selezionano le chiamate ai metodi da far passare tramite proxy.
MsilEncryptionBooleano / Stringafalse--msilencryptionIndica se cifrare il codice MSIL dei metodi. Le espressioni regolari selezionano i metodi da cifrare in base alla firma.
ResourceEncryptionBooleano / Chiave=Valorefalse--resourceencryptionIndica se cifrare le risorse gestite. Le coppie chiave-valore abilitano separatamente la cifratura e la compressione.
SingleFile 12.0Booleanofalse--singlefileSegnala 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.
StringEncryptionBooleano / Stringafalse--stringencryptionIndica se cifrare le stringhe utente. Il valore seleziona l’algoritmo: xor, hash o stream 12.0 Ultimate.
SuppressIldasmBooleanofalse--ildasmIndica se impedire a ILDASM di disassemblare l’assembly offuscato.
SuppressReflectionBooleano / Interofalse--reflectionIndica 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.
TamperingDetectionBooleanofalse--tamperingdetectionIndica se abilitare il rilevamento delle manomissioni.
TrustedBundle 12.0 UltimateStringa--trustedbundleIdentificatore del bundle iOS attendibile (CFBundleIdentifier), fissato dal controllo di integrità del pacchetto su iOS.
TrustedSigner 12.0 UltimateStringa--trustedsignerElenco 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 UltimateStringa--trustedteamIdentificatore del team Apple Developer attendibile, fissato dal controllo di integrità del pacchetto su iOS.
ValueEncryptionBooleano / Chiave=Valorefalse--valueencryptionIndica se cifrare i valori costanti e gli array. Le coppie chiave-valore selezionano i tipi di valore da cifrare.

Ottimizzazioni

AttributoTipoPredefinitoRiga di comandoDescrizione
CleanAttributesBooleano / Stringafalse--cleanattrsIndica se rimuovere gli attributi indesiderati. Le espressioni regolari selezionano i nomi completi dei tipi di attributo da rimuovere.
ConstRemovalBooleanofalse--constremovalIndica se rimuovere i campi costanti.
DeadCodeEliminationBooleano / Stringafalse--deadcodeIndica 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.
DisgregateRemovalBooleanofalse--disgregateremovalIndica se rimuovere i metadati di proprietà ed eventi.
EnumRemovalBooleanofalse--enumremovalIndica se rimuovere i tipi System.Enum.
InlineExpansionBooleanofalse--inlineexpansionIndica se sostituire con il corpo del metodo le chiamate ai metodi contrassegnati per l’espansione inline.
SealClassesBooleanofalse--sealIndica se sigillare le classi che non sono usate in nessuna catena di ereditarietà.

Generazione del codice

AttributoTipoPredefinitoRiga di comandoDescrizione
AddReferencesStringa--addreferenceElenco degli assembly da aggiungere come riferimenti dell’assembly target.
FrameworkStringaNome del framework di destinazione imposto per l’assembly elaborato.
GenerateDebugBooleano / Stringafalse--debugIndica se generare i simboli di debug dell’assembly offuscato. Come valore puoi specificare il percorso di un archivio simboli.
InstrumentBooleano / Stringafalse--instrumentIndica se strumentare il codice. Le espressioni regolari selezionano i nomi completi dei metodi da strumentare.
InstrumentEmptyMethodsBooleanofalse--emptymethodsIndica se strumentare i metodi con il corpo vuoto.
ModuleInitializerBooleano / Stringafalse--moduleinitializerIndica se aggiungere all’assembly target il codice dell’inizializzatore di modulo.
ModuleInitializerTargetStringa--moduleinitializerFirma del metodo statico, senza parametri, chiamato dopo il caricamento del modulo.
ModuleVersionIdBooleano / Stringafalse--moduleversionidIndica 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

AttributoTipoPredefinitoRiga di comandoDescrizione
AndroidSigningKeyAliasStringa--keyaliasAlias della chiave nel keystore Android (pacchetti APK).
AndroidSigningKeyPassStringa--keypassPassword della chiave nel keystore Android (pacchetti APK).
AndroidSigningKeyStoreStringa--keystoreFile del keystore Android (pacchetti APK).
AndroidSigningStorePassStringa--storepassPassword del keystore Android (pacchetti APK).
RemoveFilesStringa--removeElenco degli assembly distribuiti da rimuovere dal pacchetto.
SkipFilesStringa--skipElenco degli assembly distribuiti che non vengono offuscati.
TakeFilesStringa--takeElenco degli assembly distribuiti da offuscare.
XapCompressionLevelIntero6--compressLivello di compressione del pacchetto, da 0 (nessuna compressione) a 9 (pacchetti XAP).

Output del task

OutputDescrizione
CommandLineArgsLa riga di comando passata a Babel, disponibile quando ProvideCommandLineArgs è true.
ExitCodeIl 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>
Last updated on