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 pluginf 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