Babel Task Reference
The Babel task has various attributes that allow you to configure the obfuscation process. These attributes control the command-line options available to the babel tool.
Miscellaneous
| Task Attribute | Type | Description |
|---|---|---|
| License | String | Full path to the license file or list of license file search directories |
| DbgHelpDllDir | String | Set the path to the dbghelp.dll |
| DetectIfObfuscated | String | The action to take if the target assembly is already obfuscated |
| EnableObfuscationAgent | Boolean | Whether to enable the obfuscation Agent |
| NoConfig | Boolean | Whether to ignore configuration file |
| NoWarnings | String | List of warning message codes to ignore |
| QuickRules | String | Quick rule definitions (see Command Line Reference) |
| RandomSeed | String | Initialize the random number generator used during obfuscation |
| SatelliteAssemblies | String | List of satellite assembly files |
| SearchSatelliteAssemblies | Boolean | Whether to enable the search of satellite assemblies |
| SearchDirectories | String | List of assembly search directories |
| ShowLogo | Boolean | Outputs Babel copyright information |
| ShowStatistics | Boolean Key=Value | Whether to show obfuscation statistics. (see Command Line Reference) |
| TargetAssemblyName | String | Set target assembly name origin. Can be nochange, inputfilename, outputfilename, name=assemblyname |
| ToolExe | String | Executable name that can be babel.exe or babel.dll |
| ToolPath | String | Directory to babel tool |
| Trace | String | By passing a regular expression, it is possible to trace the symbols to spot the reason why they are not obfuscated. It can be used to debug obfuscation rules |
| Use | Key=Value | Set usage options as key-value pairs. (see Command Line Reference) |
| VerboseLevel | Int | Set the log verbosity level |
| WarningsAsErrors | String | Any messages that would ordinarily be reported as warnings are instead reported as errors by stopping the obfuscation process |
| WarningsAsInfos | String | Messages that would typically be reported as warnings will be displayed as informational messages, reducing their severity while still providing useful feedback |
| XmlRules | String | Contains the XML Rules definition elements (see XML Rules) |
Input Files
| Task Attribute | Type | Description |
|---|---|---|
| DependenciesManifest | String | The path to target assembly .deps.json file |
| InputFile | String | The path of the source target assembly |
| KeyFile | String | Path of the strong-name key file |
| KeyContainer | String | Key container name (Windows only) |
| KeyPwd | String | Strong name certificate password |
| MapInFiles | String | List of obfuscation rules files to process |
| RulesFiles | String | List of XML map files to process |
Output Files
| Task Attribute | Type | Description |
|---|---|---|
| GenerateLogFile | Boolean | Whether to generate an obfuscation log. The default log file name will be <target assembly>.log |
| GenerateMapOutFile | Boolean | Whether to generate an obfuscation map file. The default map file name will be <target assembly>.xml.map |
| LogFile | String | Obfuscation log file path |
| MapOutFile | String | Obfuscation map file path |
| OutputFile | String | Obfuscated target file path |
| PdbFile | String | Debug symbols file path |
| PdbPwd | String | Set debug symbol file password |
Plugins
| Task Attribute | Type | Description |
|---|---|---|
| Plugins | String | List of plugin assembly files |
| PluginsArguments | Key=Value | Set plugin arguments as key-value pairs |
Merge and Embed
| Task Attribute | Type | Description |
|---|---|---|
| CopyAttributes | Boolean String | Whether assembly level attributes of merged assemblies are copied into the target assembly |
| EmbedAssemblies | String | List of assembly files to embed into the primary assembly |
| Internalize | Boolean | Whether merged types have their visibility restricted to the assembly |
| JsonManifest | Boolean | Whether to handle merged dependencies in JSON manifest |
| MergeAssemblies | String | List of assembly files to merge into the primary assembly |
Renaming
| Task Attribute | Type | Description |
|---|---|---|
| FlattenNamespaces | Boolean String | Whether to remove namespace information. Set type namespace name. |
| NameLength | Int String | Set the minimum obfuscated symbol's name length. Additionally, key-value pairs can be specified to assign the value to a particular symbol kind. |
| NamePrefix | String | Set obfuscated symbol name prefix. It can be $name or any string. Additionally, key-value pairs can be specified to assign the prefix to a particular symbol kind. |
| ObfuscateTypes | Boolean | Whether to obfuscate type names |
| ObfuscateEvents | Boolean | Whether to obfuscate event names |
| ObfuscateMethods | Boolean | Whether to obfuscate method names |
| ObfuscateParameters | Boolean | Whether to obfuscate parameter names |
| ObfuscateProperties | Boolean | Whether to obfuscate property names |
| ObfuscateFields | Boolean | Whether to obfuscate field names |
| ObfuscateXaml | Boolean Key=Value | (Boolean) Whether to obfuscate XAML/BAML code. |
| OverloadedRenaming | Boolean | Whether to overload symbol names |
| UnicodeNormalization | Boolean String | Whether to generate names using Unicode symbols. If disabled, ASCII characters will be used. Optionally a list of comma-separated characters can be specified. |
| VirtualFunctions | Boolean Key=Value | Whether to enable obfuscation of virtuals. (see Command Line Reference) |
| XmlDocFiles | String | List of XML documentation files to be processed |
Control Flow Obfuscation
| Task Attribute | Type | Description |
|---|---|---|
| ControlFlowObfuscation | Boolean Key=Value | Whether to enable method control flow obfuscation. (see Command Line Reference) |
| ControlFlowIterations | Int | The number of iterations used in the control flow obfuscation algorithm |
| EmitInvalidOpcodes | Boolean | Whether to emit invalid MSIL op-codes |
Encryption and Protection
| Task Attribute | Type | Description |
|---|---|---|
| DebuggingProtection | Boolean | Whether to enable anti-debugging protection |
| DynamicProxy | Boolean Key=Value | Whether to wrap calls to external assemblies in dynamically generated proxies. (see Command Line Reference) |
| DynamicProxyCallFilters | String | List of regular expressions that determine which method calls should be proxied. |
| MsilEncryption | Boolean String | Whether to enable code encryption. Optionally a given regular expression can be specified to encrypt the methods that match their signature |
| ResourceEncryption | Boolean Key=Value | Whether to encrypt managed resources.(see Command Line Reference) |
| StringEncryption | Boolean String | Whether to enable encryption of user strings. Optionally the encryption string algorithm name can be specified. (see Command Line Reference) |
| SuppressIldasm | Boolean | Whether to prevent ILDASM from disassembling the obfuscated target |
| SuppressReflection | Boolean | Whether to prevent tools using reflection API to inspect metadata |
| TamperingDetection | Boolean | Whether to enable anti-tampering protection |
| ValueEncryption | Boolean Key=Value | Whether to encrypt constant inline values and arrays. (see Command Line Reference) |
Optimizations
| Task Attribute | Type | Description |
|---|---|---|
| CleanAttributes | Boolean String | Whether to clean up unwanted attributes. A list of regular expressions that filters out the full names of unwanted attribute types |
| ConstRemoval | Boolean | Whether to enable constant fields removal |
| DeadCodeElimination | Boolean | Whether to remove unused methods from the target assembly |
| DisgregateRemoval | Boolean | Whether to enable properties and event metadata removal |
| EnumRemoval | Boolean | Whether to enable System.Enum types removal |
| InlineExpansion | Boolean | Whether to enable the method's inline expansion |
| SealClasses | Boolean | Whether to seal classes whenever possible |
Code Generation
| Task Attribute | Type | Description |
|---|---|---|
| AddReference | String | List of assembly files to add as a reference in the primary assembly |
| Framework | String | Set the target assembly framework name |
| GenerateDebug | Boolean | Whether to enable debug symbols generation for the target assembly |
| Instrument | Boolean String | Whether to enable code instrumentation. A list of regular expressions that filters out the method's full names that will be instrumented |
| InstrumentEmptyMethods | Boolean | Whether to enable the instrumentation of methods with an empty body |
| ModuleInitializer | Boolean | Whether to add module initializer code to the primary assembly |
| ModuleInitializerTarget | String | Set module initializer target method name |
| ModuleVersionId | String | Set module MVID GUID string |
Packages
| Task Attribute | Type | Description |
|---|---|---|
| AndroidSigningKeyAlias | String | Android key store alias (APK Package) |
| AndroidSigningKeyPass | String | Android key store password (APK Package) |
| AndroidSigningKeyStore | String | Android key store file (APK Package) |
| AndroidSigningStorePass | String | Android store password (APK Package) |
| SkipFiles | String | A list of deployed assemblies files that should not be obfuscated |
| TakeFiles | String | A list of deployed assemblies files that should be obfuscated |
| RemoveFiles | String | A list of deployed assemblies that should be removed from the package |
| XapCompressionLevel | Int | Package compression level (XAP Package) |
Last updated on