Riferimento del pacchetto
Tutte le proprietà, gli elementi e i target MSBuild definiti dal pacchetto Babel.Obfuscator, e la corrispondenza tra le proprietà del pacchetto e gli attributi del task Babel.
Proprietà del pacchetto
Le proprietà seguenti controllano il pacchetto stesso. Le impostazioni di offuscamento sono elencate nella tabella Corrispondenza delle proprietà.
| Proprietà | Predefinito | Descrizione |
|---|---|---|
BabelEnabled | true | Interruttore generale. Quando è false, non viene eseguito alcun target di Babel, adattamenti della pubblicazione compresi. |
BabelPublishEnabled | $(BabelEnabled) | Indica se gli assembly uniti e incorporati vengono rimossi dall’insieme dei file da pubblicare. |
BabelUpdateDependencyFile | $(BabelEnabled) | Indica se i file .deps.json di build e di pubblicazione vengono aggiornati dopo l’offuscamento. |
BabelOverrideCompile | true | Indica se il pacchetto inserisce il passo di offuscamento dopo CoreCompile. Impostala su false per collegare a mano il target ObfuscateBuild. |
RunBabelAfterBuild | false | Quando è true, Babel viene eseguito alla fine della build su $(TargetPath) invece che sull’assembly intermedio. |
BabelBeforeTargets | Esegue il passo di offuscamento prima del target indicato, disabilitando il posizionamento predefinito. | |
BabelAfterTargets | Esegue il passo di offuscamento dopo il target indicato, disabilitando il posizionamento predefinito. | |
BabelPackageDir | radice del pacchetto | Cartella radice del pacchetto estratto. |
BabelTaskDir | in base all’host | Cartella da cui vengono caricati il task Babel e gli strumenti; vedi Selezionare gli strumenti di build. |
BabelPath | $(BabelTaskDir) | Cartella dell’eseguibile di Babel da eseguire (attributo del task ToolPath). |
BabelExe | Nome dell’eseguibile di Babel, babel.exe o babel.dll (attributo del task ToolExe). | |
BabelInputFile | assembly intermedio | Assembly da offuscare. Calcolato dal pacchetto; sovrascrivilo in un target delle impostazioni. |
BabelOutputFile | $(BabelInputFile) | Output offuscato. Calcolato dal pacchetto; sovrascrivilo in un target delle impostazioni. |
BabelLicense | babel.licenses trovato nella cartella del progetto o in una cartella superiore | Percorso del file di licenza, chiave di licenza o chiave utente floating:. |
BabelLicenseDir | Cartella in cui è stato trovato babel.licenses, impostata dal pacchetto. | |
SymbolsRenaming | true | Abilita o disabilita tutte le funzionalità di ridenominazione insieme. |
NoConfiguration | true | Indica se Babel ignora il proprio file di configurazione. |
GenerateDebug | true quando esiste un PDB | Indica se vengono generati i simboli di debug per l’assembly offuscato. |
CopyOutputSymbolsToPublishDirectory | false in Release | Proprietà standard dell’SDK; il pacchetto la disattiva in Release, così i file PDB non vengono pubblicati. |
BabelProvideCommandLineArgs | false | Scrive la riga di comando di Babel nel log e nell’elemento @(BabelCommandLineArgs). |
BabelWarningsAsErrors | Codici di avviso da segnalare come errori. Impostala su W00000 per far fallire le build eseguite in modalità demo. | |
BabelWarningsAsInfos | Codici di avviso da segnalare come messaggi informativi. | |
BabelWarningsToIgnore | Codici di avviso da sopprimere. | |
BabelExitCode | Output: codice di uscita del task Babel, disponibile dopo CoreObfuscate. |
Elementi del pacchetto
| Elemento | Descrizione |
|---|---|
BabelRules | File di regole XML. babelRules.xml nella cartella del progetto viene aggiunto automaticamente. |
MergeAssembly | Assembly da unire all’assembly target. |
EmbedAssembly | Assembly da incorporare nell’assembly target. |
MapInFile | File map XML di assembly già offuscati. |
BabelPlugin | Assembly dei plugin da caricare. |
BabelSearchDirectories | Cartelle di ricerca degli assembly. Calcolate dai riferimenti del progetto; sostituiscile o estendile in un target delle impostazioni. |
BabelTargetReferences | Voci di ricerca aggiuntive passate come riferimenti. |
AddReferences | Assembly da aggiungere come riferimenti dell’assembly offuscato. |
SatelliteAssembly | Assembly satellite da elaborare. |
XmlDocumentationFile | File di documentazione XML da elaborare insieme all’assembly. |
BabelCommandLineArgs | Output: la riga di comando passata a Babel, quando BabelProvideCommandLineArgs è true. |
Target
| Target | Descrizione |
|---|---|
ObfuscateBuild | Il passo di offuscamento inserito nella build. Esegue ObfuscateSettings e poi Obfuscate. |
ObfuscateSettings | Prepara la configurazione del task Babel eseguendo i target delle impostazioni elencati di seguito. |
ObfuscateDefaultSettings | Applica i valori predefiniti della ridenominazione, cerca il file di licenza, aggiunge babelRules.xml e compone l’elenco delle cartelle di ricerca. |
ObfuscateFrameworkSettings | Seleziona l’assembly da elaborare: l’assembly intermedio, oppure $(TargetPath) quando RunBabelAfterBuild è true. |
ObfuscateSetupBabelFiles | Imposta BabelInputFile e BabelOutputFile, e abilita GenerateDebug quando esiste un PDB. |
ObfuscateCustomSettings, SetupObfuscate, ConfigureBabel | Target vuoti, ridefiniscili per modificare la configurazione calcolata prima dell’esecuzione di Babel. |
Obfuscate | Esegue BeforeObfuscate, CoreObfuscate e AfterObfuscate. |
BeforeObfuscate | Target vuoto, ridefiniscilo per eseguire dei task subito prima del task Babel. |
CoreObfuscate | Esegue il task Babel. Non ridefinirlo. |
AfterObfuscate | Target vuoto, ridefiniscilo per eseguire dei task subito dopo il task Babel. |
UpdateBabelBuildDependencyFile | Dopo GenerateBuildDependencyFile: rimuove gli assembly uniti e incorporati e il pacchetto dal file .deps.json di build. |
UpdateBabelPublishDependencyFile | Dopo GeneratePublishDependencyFile: lo stesso per il file .deps.json di pubblicazione. |
UpdateBabelFilesToPublish | Dopo ComputeFilesToPublish: rimuove gli assembly uniti e incorporati dall’insieme dei file da pubblicare. |
OverrideCompileWithBabel | Dopo PrepareForBuild: inserisce ObfuscateBuild dopo CoreCompile, a meno che il passo sia stato spostato o la build sia una build in fase di progettazione. |
EnableObfuscationFlag | Attivato dalla compilazione: abilita ObfuscateBuild solo quando il compilatore è stato effettivamente eseguito. |
Corrispondenza delle proprietà
La tabella associa ogni attributo del task Babel alla proprietà o all’elemento MSBuild letto dal pacchetto. Le proprietà accettano gli stessi valori dell’opzione corrispondente della riga di comando. Gli attributi contrassegnati con 12.0 sono stati aggiunti nella versione 12.
| Attributo del task Babel | Tipo | Proprietà o elemento del pacchetto |
|---|---|---|
AddReferences | Elemento | @(AddReferences) |
AndroidSigningKeyAlias | Proprietà | AndroidSigningKeyAlias |
AndroidSigningKeyPass | Proprietà | AndroidSigningKeyPass |
AndroidSigningKeyStore | Proprietà | AndroidSigningKeyStore |
AndroidSigningStorePass | Proprietà | AndroidSigningStorePass |
BabelDirectory | Proprietà | BabelDirectory |
CleanAttributes | Proprietà | CleanAttributes |
ConstRemoval | Proprietà | ConstRemoval |
ControlFlowIterations | Proprietà | ControlFlowIterations (ILIterations è accettato come alias) |
ControlFlowObfuscation | Proprietà | ControlFlowObfuscation |
CopyAttributes | Proprietà | MergeCopyAttributes |
DbgHelpDllDir | Proprietà | DbgHelpDllDir |
DeadCodeElimination | Proprietà | DeadCodeElimination |
DebuggingProtection | Proprietà | DebuggingProtection |
DependenciesManifest | Proprietà | DependenciesManifest |
DetectIfObfuscated | Proprietà | DetectIfObfuscated |
DisgregateRemoval | Proprietà | DisgregateRemoval |
DynamicProxy | Proprietà | DynamicProxy |
DynamicProxyCallFilters | Proprietà | DynamicProxyCallFilters |
EmbedAssemblies | Elemento | @(EmbedAssembly) |
EmitInvalidOpcodes | Proprietà | EmitInvalidOpcodes |
EnableObfuscationAgent | Proprietà | EnableObfuscationAgent |
EnumRemoval | Proprietà | EnumRemoval |
FlattenNamespaces | Proprietà | FlattenNamespaces |
Framework | Proprietà | Framework |
GenerateDebug | Proprietà | GenerateDebug |
GenerateLogFile | Proprietà | GenerateLogFile |
GenerateMapOutFile | Proprietà | GenerateMapOutFile |
InlineExpansion | Proprietà | InlineExpansion |
InputFile | Proprietà | BabelInputFile |
Instrument | Proprietà | BabelInstrument |
InstrumentEmptyMethods | Proprietà | InstrumentEmptyMethods |
Internalize | Proprietà | MergeInternalize |
KeyContainer | Proprietà | KeyContainerName |
KeyFile | Proprietà | KeyOriginatorFile |
KeyPwd | Proprietà | SigningCertPassword |
License | Proprietà | BabelLicense |
LogFile | Proprietà | BabelLogFile |
MakeProject | Proprietà | MakeBabelProjectFile |
MapInFiles | Elemento | @(MapInFile) |
MapOutFile | Proprietà | BabelMapOutFile |
MergeAssemblies | Elemento | @(MergeAssembly) |
ModuleInitializer | Proprietà | ModuleInitializer |
ModuleInitializerTarget | Proprietà | ModuleInitializerTarget |
ModuleVersionId | Proprietà | ModuleVersionId |
MsilEncryption | Proprietà | MsilEncryption |
NameLength | Proprietà | NameLength |
NamePrefix | Proprietà | NamePrefix |
NoConfiguration | Proprietà | NoConfiguration |
NoWarnings | Proprietà | BabelWarningsToIgnore |
ObfuscateEvents | Proprietà | ObfuscateEvents |
ObfuscateFields | Proprietà | ObfuscateFields |
ObfuscateMethods | Proprietà | ObfuscateMethods |
ObfuscateParameters | Proprietà | ObfuscateParameters |
ObfuscateProperties | Proprietà | ObfuscateProperties |
ObfuscateTypes | Proprietà | ObfuscateTypes |
ObfuscateXaml | Proprietà | ObfuscateXaml |
OutputFile | Proprietà | BabelOutputFile |
OverloadedRenaming | Proprietà | OverloadedRenaming |
PdbFile | Proprietà | PdbFile |
PdbPwd | Proprietà | PdbPwd |
Plugins | Elemento | @(BabelPlugin) |
PluginsArguments | Proprietà | PluginsArguments |
ProvideCommandLineArgs | Proprietà | BabelProvideCommandLineArgs |
RandomSeed | Proprietà | RandomSeed |
References | Elemento | @(BabelTargetReferences) |
RemoveFiles | Proprietà | BabelRemoveFiles |
ResourceEncryption | Proprietà | ResourceEncryption |
RulesFiles | Elemento | @(BabelRules) |
SatelliteAssemblies | Elemento | @(SatelliteAssembly) |
SealClasses | Proprietà | SealClasses |
SearchDirectories | Elemento | @(BabelSearchDirectories) |
SearchSatelliteAssemblies | Proprietà | SearchSatelliteAssemblies |
ShowLogo | Proprietà | ShowLogo |
ShowStatistics | Proprietà | ShowStatistics |
SingleFile | Proprietà | PublishSingleFile (proprietà standard dell’SDK) |
SkipFiles | Proprietà | BabelSkipFiles |
StatisticsFile | Proprietà | StatisticsFile |
StringEncryption | Proprietà | StringEncryption |
SuppressIldasm | Proprietà | SuppressIldasm |
SuppressReflection | Proprietà | SuppressReflection |
TakeFiles | Proprietà | BabelTakeFiles |
TamperingDetection | Proprietà | TamperingDetection |
TargetAssemblyName | Proprietà | TargetAssemblyName |
ToolExe | Proprietà | BabelExe |
ToolPath | Proprietà | BabelPath |
Trace | Proprietà | Trace |
TrustedBundle 12.0 | Proprietà | TrustedBundle |
TrustedSigner 12.0 | Proprietà | TrustedSigner (più impronte separate da ;) |
TrustedTeam 12.0 | Proprietà | TrustedTeam |
UnicodeNormalization | Proprietà | UnicodeNormalization |
Use | Proprietà | Use |
ValueEncryption | Proprietà | ValueEncryption |
VerboseLevel | Proprietà | VerboseLevel |
VirtualFunctions | Proprietà | VirtualFunctions |
WarningsAsErrors | Proprietà | BabelWarningsAsErrors |
WarningsAsInfos | Proprietà | BabelWarningsAsInfos |
XapCompressionLevel | Proprietà | XapCompressionLevel |
XmlDocFiles | Elemento | @(XmlDocumentationFile) |
XmlRules | Proprietà | XmlRules |
Impostare l’algoritmo di cifratura delle stringhe
La proprietà StringEncryption del pacchetto abilita la cifratura delle stringhe e seleziona l’algoritmo, esattamente come l’opzione --stringencryption della riga di comando. I valori accettati sono xor, hash, stream e custom (vedi Cifratura delle stringhe per una descrizione di ciascuno). Il valore booleano true abilita la cifratura delle stringhe con l’algoritmo predefinito, mentre il nome di un algoritmo la abilita e seleziona quell’algoritmo.
Per esempio, per cifrare le stringhe con l’algoritmo STREAM (cifratura autenticata per singola stringa, interamente gestito, sicuro con AOT, trimming e FIPS, e supportato da .NET Framework fino a .NET 10, compresi Android, iOS e MAUI), aggiungi al tuo file di progetto:
<PropertyGroup>
<StringEncryption>stream</StringEncryption>
</PropertyGroup>L’algoritmo STREAM Ultimate non è incluso nelle edizioni inferiori: con quelle, stream ripiega sull’algoritmo predefinito.
Nei progetti .NET Android, iOS e MAUI, esegui l’offuscamento come passaggio di sola cifratura delle stringhe, così i nomi dei tipi e dei membri restano intatti per lo strato di interoperabilità della piattaforma.