Referencia de la tarea Babel
Todos los atributos de la tarea Babel de MSBuild, agrupados por función, con la opción de la lÃnea de comandos a la que corresponde cada atributo.
La tarea Babel expone un atributo por cada opción de la herramienta de lÃnea de comandos y le pasa los valores de los atributos sin modificarlos. Un atributo booleano acepta true o false. Cuando la opción de la lÃnea de comandos admite un argumento, ese mismo argumento puede pasarse como valor del atributo, de modo que un atributo marcado como Booleano / Cadena acepta cualquiera de las dos formas. Los atributos de lista aceptan varios valores separados por ;. Los atributos que no se establecen conservan los valores predeterminados que figuran en las tablas.
Cuando se usa el paquete NuGet de Babel Obfuscator, cada atributo se establece mediante una propiedad o un elemento de MSBuild; consulte la tabla Asignación de propiedades de la referencia del paquete.
La versión 12.0 añade los atributos SingleFile, TrustedSigner, TrustedBundle y TrustedTeam, que controlan las comprobaciones de integridad del paquete en dispositivos móviles de la detección de manipulación, y el valor stream de StringEncryption. En las tablas siguientes están marcados con 12.0.
Varios
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
BabelDirectory | Cadena | Forma heredada de indicar la carpeta que contiene babel.exe. La tarea falla si el ejecutable no se encuentra allÃ. Es preferible usar ToolPath. | ||
DbgHelpDllDir | Cadena | --dbghelpdlldir | Ruta de la carpeta que contiene dbghelp.dll. | |
DetectIfObfuscated | Booleano / Cadena | false | --isobfuscated | Indica si se detecta que el ensamblado de destino ya está ofuscado. El valor warn genera una advertencia y continúa, exit se detiene sin procesar el ensamblado. |
EnableObfuscationAgent | Booleano | true | --agent | Indica si se ejecuta el agente de ofuscación, que analiza el ensamblado y excluye de la ofuscación los sÃmbolos cuya ofuscación lo harÃa fallar. |
License | Cadena | --license | Ruta completa del archivo de licencia, o lista de directorios en los que buscar archivos de licencia. | |
NoConfiguration | Booleano | false | --noconfig | Indica si se ignoran los valores predeterminados almacenados en el archivo de configuración de Babel. |
NoWarnings | Cadena | --nowarn | Lista de códigos de advertencia que se ignoran. | |
ProvideCommandLineArgs | Booleano | false | Indica si se escribe en el registro la lÃnea de comandos pasada a Babel y se devuelve en el elemento de salida CommandLineArgs. | |
QuickRules | Cadena | --quickrule | Definiciones de reglas rápidas. | |
RandomSeed | Cadena | --randomseed | Semilla del generador de números aleatorios que se usa durante la ofuscación. | |
RemoveKey | Booleano | false | --removekey | Indica si se quita el nombre seguro del ensamblado ofuscado. |
SatelliteAssemblies | Cadena | --satellite | Lista de archivos de ensamblados satélite que se procesan. | |
SearchDirectories | Cadena | --addsearch | Lista de directorios en los que se buscan los ensamblados a los que se hace referencia. References se acepta como alias. | |
SearchSatelliteAssemblies | Booleano | true | --satellite | Indica si se buscan y se procesan los ensamblados satélite del destino. |
ShowLogo | Booleano | true | --logo | Indica si se muestran la versión de Babel y la información de copyright. |
ShowStatistics | Booleano | true | --statistics | Indica si se muestran las estadÃsticas de ofuscación al final del proceso. Solo booleano: use StatisticsFile para guardar las estadÃsticas en un archivo. |
StatisticsFile | Cadena | --statistics | Ruta del archivo en el que se guardan las estadÃsticas de ofuscación. Se ignora cuando ShowStatistics es false. | |
TargetAssemblyName | Cadena | nochange | --assemblyname | Origen del nombre del ensamblado de destino: nochange, inputfilename, outputfilename o name=<assembly name>. |
ToolExe | Cadena | Nombre del ejecutable de Babel, babel.exe o babel.dll. | ||
ToolPath | Cadena | Directorio del ejecutable de Babel. | ||
Trace | Cadena | --trace | Lista de expresiones regulares que seleccionan los sÃmbolos cuya traza se muestra. La traza indica por qué un sÃmbolo se ofusca o no, y ayuda a depurar las reglas de ofuscación. | |
Use | Clave=valor | --use | Opciones de uso como pares clave-valor. | |
VerboseLevel | Entero | 1 | --verbose | Nivel de detalle de la salida de la consola. 0 desactiva los mensajes, los valores superiores a 10 muestran información de depuración. |
WarningsAsErrors | Cadena | --warnaserror | Lista de códigos de advertencia que se notifican como errores. Un error detiene el proceso de ofuscación. | |
WarningsAsInfos | Cadena | --warnasinfo | Lista de códigos de advertencia que se notifican como mensajes informativos. | |
XmlRules | Cadena | Elementos de reglas XML en lÃnea, consulte Reglas XML. |
Archivos de entrada
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
InputFile | Cadena | Ruta del ensamblado que se ofusca. | ||
KeyContainer | Cadena | --keyname | Nombre del contenedor de claves de nombre seguro (solo Windows). | |
KeyFile | Cadena | --keyfile | Ruta del archivo de clave de nombre seguro con el que se firma el ensamblado ofuscado. | |
KeyPwd | Cadena | --keypwd | Contraseña del archivo de clave de nombre seguro o del certificado. | |
MapInFiles | Cadena | --mapin | Lista de archivos map XML de ensamblados ya ofuscados, que se usan para renombrar las referencias a sus sÃmbolos. | |
Project | Cadena | --project | Ruta de un archivo de proyecto de ofuscación de Babel. | |
RulesFiles | Cadena | --rules | Lista de archivos de reglas XML que se procesan. |
Archivos de salida
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
GenerateLogFile | Booleano | false | --logfile | Indica si se genera un registro de la ofuscación. El nombre predeterminado del archivo de registro es <target assembly>.log. |
GenerateMapOutFile | Booleano | false | --mapout | Indica si se genera un archivo map de la ofuscación. El nombre predeterminado del archivo map es <target assembly>.xml.map. |
LogFile | Cadena | --logfile | Ruta del archivo de registro de la ofuscación. | |
MakeProject | Cadena | --makeproject | Ruta del archivo de proyecto de MSBuild que se crea a partir de los ajustes de la tarea. | |
MapOutFile | Cadena | --mapout | Ruta del archivo map de la ofuscación. | |
OutputFile | Cadena | --output | Ruta del ensamblado ofuscado. | |
PdbFile | Cadena | --pdb | Ruta del archivo de sÃmbolos de depuración. | |
PdbPwd | Cadena | --pdbpwd | Contraseña del archivo de sÃmbolos de depuración. |
Complementos
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
Plugins | Cadena | --plugin | Lista de archivos de ensamblado de complementos. | |
PluginsArguments | Clave=valor | --argument | Argumentos de los complementos como pares clave-valor. |
Combinar e incrustar
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
CopyAttributes | Booleano / Cadena | false | --copyattrs | Indica si los atributos de nivel de ensamblado de los ensamblados combinados se copian en el ensamblado de destino. Una expresión regular selecciona los atributos duplicados que pueden combinarse. |
DependenciesManifest | Booleano | true | --jsonmanifest | Indica si se actualiza el manifiesto de dependencias .deps.json del ensamblado de destino cuando se combinan o se incrustan ensamblados. |
EmbedAssemblies | Cadena | --embed | Lista de archivos de ensamblado que se incrustan en el ensamblado de destino. | |
Internalize | Booleano | false | --internalize | Indica si la visibilidad de los tipos combinados se restringe al ensamblado de destino. |
MergeAssemblies | Cadena | Lista de archivos de ensamblado que se combinan con el ensamblado de destino. |
Renombrado
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
FlattenNamespaces | Booleano / Cadena | true | --flatns | Indica si los tipos renombrados se mueven al espacio de nombres global. Una cadena establece, en cambio, un nombre de espacio de nombres común para los tipos renombrados. |
NameLength | Entero / Clave=valor | --namelength | Longitud mÃnima de los nombres ofuscados. Los pares clave-valor asignan la longitud a un tipo de sÃmbolo determinado. | |
NamePrefix | Cadena / Clave=valor | --nameprefix | Prefijo de los nombres ofuscados, $name o cualquier cadena. Los pares clave-valor asignan el prefijo a un tipo de sÃmbolo determinado. | |
ObfuscateEvents | Booleano | true | --events | Indica si se renombran los eventos. |
ObfuscateFields | Booleano | true | --fields | Indica si se renombran los campos. |
ObfuscateMethods | Booleano | true | --methods | Indica si se renombran los métodos. |
ObfuscateParameters | Booleano | true | --parameters | Indica si se renombran los parámetros de los métodos. |
ObfuscateProperties | Booleano | true | --properties | Indica si se renombran las propiedades. |
ObfuscateTypes | Booleano | true | --types | Indica si se renombran los tipos. |
ObfuscateXaml | Booleano / Clave=valor | false | --xaml | Indica si se renombran los sÃmbolos a los que hacen referencia los recursos XAML y BAML. Los pares clave-valor configuran el renombrado. |
OverloadedRenaming | Booleano / Clave=valor | false | --overloaded | Indica si se reutiliza el mismo nombre para miembros con firmas distintas. Los pares clave-valor seleccionan los miembros a los que se aplica la sobrecarga. |
UnicodeNormalization | Booleano / Cadena | false | --unicode | Indica si los nombres se generan con caracteres Unicode. Cuando está desactivado, se usan caracteres ASCII. Una lista de caracteres o intervalos separados por comas restringe el juego de caracteres. |
VirtualFunctions | Booleano / Clave=valor | true | --virtual | Indica si se renombran los miembros virtuales. Los pares clave-valor configuran el renombrado de las invalidaciones de miembros externos. |
XmlDocFiles | Cadena | --xmldoc | Lista de archivos de documentación XML que se procesan junto con el ensamblado. XmlDoc se acepta como alias heredado. |
Ofuscación del flujo de control
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
ControlFlowObfuscation | Booleano / Clave=valor | false | --controlflow | Indica si se ofusca el flujo de control de los métodos. Los pares clave-valor seleccionan los algoritmos, entre ellos chain=on para Chained State Ultimate. |
ControlFlowIterations | Entero | 3 | --iterations | Número de iteraciones de los algoritmos de ofuscación del flujo de control. 0 desactiva la ofuscación del flujo de control. ILIterations e Iterations se aceptan como alias. |
EmitInvalidOpcodes | Booleano / Cadena | false | --invalidopcodes | Indica si se emiten códigos de operación MSIL no válidos, lo que hace que el ensamblado no sea verificable. El valor enhanced inserta más códigos de operación no válidos. |
Cifrado y protección
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
DebuggingProtection | Booleano | false | --antidebugging | Indica si se activa la protección contra depuración. |
DynamicProxy | Booleano / Cadena | false | --proxy | Indica si las llamadas a métodos se envuelven en proxies generados dinámicamente. El valor selecciona las llamadas que pasan por un proxy: internal, external o all. |
DynamicProxyCallFilters | Cadena | --proxy | Lista de expresiones regulares que seleccionan las llamadas a métodos que pasan por un proxy. | |
MsilEncryption | Booleano / Cadena | false | --msilencryption | Indica si se cifra el código MSIL de los métodos. Las expresiones regulares seleccionan por su firma los métodos que se cifran. |
ResourceEncryption | Booleano / Clave=valor | false | --resourceencryption | Indica si se cifran los recursos administrados. Los pares clave-valor activan por separado el cifrado y la compresión. |
SingleFile 12.0 | Booleano | false | --singlefile | Indica que el destino se publica como aplicación de archivo único, recortada o NativeAOT. En los destinos de escritorio la comprobación de detección de manipulación es inerte en una publicación de ese tipo, y Babel emite una advertencia cuando se solicita. |
StringEncryption | Booleano / Cadena | false | --stringencryption | Indica si se cifran las cadenas de usuario. El valor selecciona el algoritmo: xor, hash o stream 12.0 Ultimate. |
SuppressIldasm | Booleano | false | --ildasm | Indica si se impide que ILDASM desensamble el ensamblado ofuscado. |
SuppressReflection | Booleano / Entero | false | --reflection | Indica si se emiten metadatos no válidos que detienen las herramientas basadas en reflexión. Un entero establece el nivel: cuanto más alto es el nivel, más metadatos no válidos se generan. |
TamperingDetection | Booleano | false | --tamperingdetection | Indica si se activa la detección de manipulación. |
TrustedBundle 12.0 Ultimate | Cadena | --trustedbundle | Identificador del bundle de iOS de confianza (CFBundleIdentifier) que fija la comprobación de integridad del paquete en iOS. | |
TrustedSigner 12.0 Ultimate | Cadena | --trustedsigner | Lista de huellas digitales SHA-256, de 64 caracteres hexadecimales cada una, de los certificados de firma de APK de Android de confianza que fija la comprobación de integridad del paquete en Android. | |
TrustedTeam 12.0 Ultimate | Cadena | --trustedteam | Identificador de equipo de Apple (Team ID) de confianza que fija la comprobación de integridad del paquete en iOS. | |
ValueEncryption | Booleano / Clave=valor | false | --valueencryption | Indica si se cifran los valores constantes y las matrices. Los pares clave-valor seleccionan los tipos de valor que se cifran. |
Optimizaciones
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
CleanAttributes | Booleano / Cadena | false | --cleanattrs | Indica si se eliminan los atributos no deseados. Las expresiones regulares seleccionan los nombres completos de los tipos de atributo que se eliminan. |
ConstRemoval | Booleano | false | --constremoval | Indica si se eliminan los campos constantes. |
DeadCodeElimination | Booleano / Cadena | false | --deadcode | Indica si se eliminan los métodos, las propiedades y los eventos que la aplicación no usa. Las expresiones regulares establecen los puntos de entrada desde los que parte la búsqueda. |
DisgregateRemoval | Booleano | false | --disgregateremoval | Indica si se eliminan los metadatos de propiedades y eventos. |
EnumRemoval | Booleano | false | --enumremoval | Indica si se eliminan los tipos System.Enum. |
InlineExpansion | Booleano | false | --inlineexpansion | Indica si las llamadas a los métodos marcados para la expansión en lÃnea se sustituyen por el cuerpo del método. |
SealClasses | Booleano | false | --seal | Indica si se sellan las clases que no se usan en ninguna cadena de herencia. |
Generación de código
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
AddReferences | Cadena | --addreference | Lista de ensamblados que se añaden como referencias del ensamblado de destino. | |
Framework | Cadena | Nombre de la plataforma de destino que se fuerza para el ensamblado procesado. | ||
GenerateDebug | Booleano / Cadena | false | --debug | Indica si se generan los sÃmbolos de depuración del ensamblado ofuscado. Como valor puede especificarse la ruta de un almacén de sÃmbolos. |
Instrument | Booleano / Cadena | false | --instrument | Indica si se instrumenta el código. Las expresiones regulares seleccionan los nombres completos de los métodos que se instrumentan. |
InstrumentEmptyMethods | Booleano | false | --emptymethods | Indica si se instrumentan los métodos con el cuerpo vacÃo. |
ModuleInitializer | Booleano / Cadena | false | --moduleinitializer | Indica si se añade código de inicializador de módulo al ensamblado de destino. |
ModuleInitializerTarget | Cadena | --moduleinitializer | Firma del método estático, sin parámetros, al que se llama después de cargarse el módulo. | |
ModuleVersionId | Booleano / Cadena | false | --moduleversionid | Indica si se establece el identificador de versión del módulo (MVID) del ensamblado ofuscado. Una cadena GUID establece el valor; de lo contrario, se genera uno aleatorio. |
Paquetes
| Atributo | Tipo | Predeterminado | LÃnea de comandos | Descripción |
|---|---|---|---|---|
AndroidSigningKeyAlias | Cadena | --keyalias | Alias de la clave en el almacén de claves de Android (paquetes APK). | |
AndroidSigningKeyPass | Cadena | --keypass | Contraseña de la clave en el almacén de claves de Android (paquetes APK). | |
AndroidSigningKeyStore | Cadena | --keystore | Archivo del almacén de claves de Android (paquetes APK). | |
AndroidSigningStorePass | Cadena | --storepass | Contraseña del almacén de claves de Android (paquetes APK). | |
RemoveFiles | Cadena | --remove | Lista de ensamblados desplegados que se quitan del paquete. | |
SkipFiles | Cadena | --skip | Lista de ensamblados desplegados que no se ofuscan. | |
TakeFiles | Cadena | --take | Lista de ensamblados desplegados que se ofuscan. | |
XapCompressionLevel | Entero | 6 | --compress | Nivel de compresión del paquete, de 0 (sin compresión) a 9 (paquetes XAP). |
Salidas de la tarea
| Salida | Descripción |
|---|---|
CommandLineArgs | La lÃnea de comandos pasada a Babel, disponible cuando ProvideCommandLineArgs es true. |
ExitCode | El código de salida devuelto por Babel. |
Ejemplo
La tarea siguiente ofusca el ensamblado intermedio de un proyecto .NET MAUI para Android con cifrado de cadenas STREAM y detección de manipulación fijada al certificado de firma del APK, y captura la lÃnea de comandos pasada 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>