Skip to Content
Nueva versión 12 disponible 🎉
ObfuscatorTarea de MSBuildReferencia de la tarea Babel

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

AtributoTipoPredeterminadoLínea de comandosDescripción
BabelDirectoryCadenaForma heredada de indicar la carpeta que contiene babel.exe. La tarea falla si el ejecutable no se encuentra allí. Es preferible usar ToolPath.
DbgHelpDllDirCadena--dbghelpdlldirRuta de la carpeta que contiene dbghelp.dll.
DetectIfObfuscatedBooleano / Cadenafalse--isobfuscatedIndica 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.
EnableObfuscationAgentBooleanotrue--agentIndica 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.
LicenseCadena--licenseRuta completa del archivo de licencia, o lista de directorios en los que buscar archivos de licencia.
NoConfigurationBooleanofalse--noconfigIndica si se ignoran los valores predeterminados almacenados en el archivo de configuración de Babel.
NoWarningsCadena--nowarnLista de códigos de advertencia que se ignoran.
ProvideCommandLineArgsBooleanofalseIndica si se escribe en el registro la línea de comandos pasada a Babel y se devuelve en el elemento de salida CommandLineArgs.
QuickRulesCadena--quickruleDefiniciones de reglas rápidas.
RandomSeedCadena--randomseedSemilla del generador de números aleatorios que se usa durante la ofuscación.
RemoveKeyBooleanofalse--removekeyIndica si se quita el nombre seguro del ensamblado ofuscado.
SatelliteAssembliesCadena--satelliteLista de archivos de ensamblados satélite que se procesan.
SearchDirectoriesCadena--addsearchLista de directorios en los que se buscan los ensamblados a los que se hace referencia. References se acepta como alias.
SearchSatelliteAssembliesBooleanotrue--satelliteIndica si se buscan y se procesan los ensamblados satélite del destino.
ShowLogoBooleanotrue--logoIndica si se muestran la versión de Babel y la información de copyright.
ShowStatisticsBooleanotrue--statisticsIndica 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.
StatisticsFileCadena--statisticsRuta del archivo en el que se guardan las estadísticas de ofuscación. Se ignora cuando ShowStatistics es false.
TargetAssemblyNameCadenanochange--assemblynameOrigen del nombre del ensamblado de destino: nochange, inputfilename, outputfilename o name=<assembly name>.
ToolExeCadenaNombre del ejecutable de Babel, babel.exe o babel.dll.
ToolPathCadenaDirectorio del ejecutable de Babel.
TraceCadena--traceLista 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.
UseClave=valor--useOpciones de uso como pares clave-valor.
VerboseLevelEntero1--verboseNivel de detalle de la salida de la consola. 0 desactiva los mensajes, los valores superiores a 10 muestran información de depuración.
WarningsAsErrorsCadena--warnaserrorLista de códigos de advertencia que se notifican como errores. Un error detiene el proceso de ofuscación.
WarningsAsInfosCadena--warnasinfoLista de códigos de advertencia que se notifican como mensajes informativos.
XmlRulesCadenaElementos de reglas XML en línea, consulte Reglas XML.

Archivos de entrada

AtributoTipoPredeterminadoLínea de comandosDescripción
InputFileCadenaRuta del ensamblado que se ofusca.
KeyContainerCadena--keynameNombre del contenedor de claves de nombre seguro (solo Windows).
KeyFileCadena--keyfileRuta del archivo de clave de nombre seguro con el que se firma el ensamblado ofuscado.
KeyPwdCadena--keypwdContraseña del archivo de clave de nombre seguro o del certificado.
MapInFilesCadena--mapinLista de archivos map XML de ensamblados ya ofuscados, que se usan para renombrar las referencias a sus símbolos.
ProjectCadena--projectRuta de un archivo de proyecto de ofuscación de Babel.
RulesFilesCadena--rulesLista de archivos de reglas XML que se procesan.

Archivos de salida

AtributoTipoPredeterminadoLínea de comandosDescripción
GenerateLogFileBooleanofalse--logfileIndica si se genera un registro de la ofuscación. El nombre predeterminado del archivo de registro es <target assembly>.log.
GenerateMapOutFileBooleanofalse--mapoutIndica si se genera un archivo map de la ofuscación. El nombre predeterminado del archivo map es <target assembly>.xml.map.
LogFileCadena--logfileRuta del archivo de registro de la ofuscación.
MakeProjectCadena--makeprojectRuta del archivo de proyecto de MSBuild que se crea a partir de los ajustes de la tarea.
MapOutFileCadena--mapoutRuta del archivo map de la ofuscación.
OutputFileCadena--outputRuta del ensamblado ofuscado.
PdbFileCadena--pdbRuta del archivo de símbolos de depuración.
PdbPwdCadena--pdbpwdContraseña del archivo de símbolos de depuración.

Complementos

AtributoTipoPredeterminadoLínea de comandosDescripción
PluginsCadena--pluginLista de archivos de ensamblado de complementos.
PluginsArgumentsClave=valor--argumentArgumentos de los complementos como pares clave-valor.

Combinar e incrustar

AtributoTipoPredeterminadoLínea de comandosDescripción
CopyAttributesBooleano / Cadenafalse--copyattrsIndica 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.
DependenciesManifestBooleanotrue--jsonmanifestIndica si se actualiza el manifiesto de dependencias .deps.json del ensamblado de destino cuando se combinan o se incrustan ensamblados.
EmbedAssembliesCadena--embedLista de archivos de ensamblado que se incrustan en el ensamblado de destino.
InternalizeBooleanofalse--internalizeIndica si la visibilidad de los tipos combinados se restringe al ensamblado de destino.
MergeAssembliesCadenaLista de archivos de ensamblado que se combinan con el ensamblado de destino.

Renombrado

AtributoTipoPredeterminadoLínea de comandosDescripción
FlattenNamespacesBooleano / Cadenatrue--flatnsIndica 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.
NameLengthEntero / Clave=valor--namelengthLongitud mínima de los nombres ofuscados. Los pares clave-valor asignan la longitud a un tipo de símbolo determinado.
NamePrefixCadena / Clave=valor--nameprefixPrefijo de los nombres ofuscados, $name o cualquier cadena. Los pares clave-valor asignan el prefijo a un tipo de símbolo determinado.
ObfuscateEventsBooleanotrue--eventsIndica si se renombran los eventos.
ObfuscateFieldsBooleanotrue--fieldsIndica si se renombran los campos.
ObfuscateMethodsBooleanotrue--methodsIndica si se renombran los métodos.
ObfuscateParametersBooleanotrue--parametersIndica si se renombran los parámetros de los métodos.
ObfuscatePropertiesBooleanotrue--propertiesIndica si se renombran las propiedades.
ObfuscateTypesBooleanotrue--typesIndica si se renombran los tipos.
ObfuscateXamlBooleano / Clave=valorfalse--xamlIndica si se renombran los símbolos a los que hacen referencia los recursos XAML y BAML. Los pares clave-valor configuran el renombrado.
OverloadedRenamingBooleano / Clave=valorfalse--overloadedIndica 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.
UnicodeNormalizationBooleano / Cadenafalse--unicodeIndica 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.
VirtualFunctionsBooleano / Clave=valortrue--virtualIndica si se renombran los miembros virtuales. Los pares clave-valor configuran el renombrado de las invalidaciones de miembros externos.
XmlDocFilesCadena--xmldocLista 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

AtributoTipoPredeterminadoLínea de comandosDescripción
ControlFlowObfuscationBooleano / Clave=valorfalse--controlflowIndica 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.
ControlFlowIterationsEntero3--iterationsNú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.
EmitInvalidOpcodesBooleano / Cadenafalse--invalidopcodesIndica 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

AtributoTipoPredeterminadoLínea de comandosDescripción
DebuggingProtectionBooleanofalse--antidebuggingIndica si se activa la protección contra depuración.
DynamicProxyBooleano / Cadenafalse--proxyIndica 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.
DynamicProxyCallFiltersCadena--proxyLista de expresiones regulares que seleccionan las llamadas a métodos que pasan por un proxy.
MsilEncryptionBooleano / Cadenafalse--msilencryptionIndica si se cifra el código MSIL de los métodos. Las expresiones regulares seleccionan por su firma los métodos que se cifran.
ResourceEncryptionBooleano / Clave=valorfalse--resourceencryptionIndica si se cifran los recursos administrados. Los pares clave-valor activan por separado el cifrado y la compresión.
SingleFile 12.0Booleanofalse--singlefileIndica 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.
StringEncryptionBooleano / Cadenafalse--stringencryptionIndica si se cifran las cadenas de usuario. El valor selecciona el algoritmo: xor, hash o stream 12.0 Ultimate.
SuppressIldasmBooleanofalse--ildasmIndica si se impide que ILDASM desensamble el ensamblado ofuscado.
SuppressReflectionBooleano / Enterofalse--reflectionIndica 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.
TamperingDetectionBooleanofalse--tamperingdetectionIndica si se activa la detección de manipulación.
TrustedBundle 12.0 UltimateCadena--trustedbundleIdentificador del bundle de iOS de confianza (CFBundleIdentifier) que fija la comprobación de integridad del paquete en iOS.
TrustedSigner 12.0 UltimateCadena--trustedsignerLista 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 UltimateCadena--trustedteamIdentificador de equipo de Apple (Team ID) de confianza que fija la comprobación de integridad del paquete en iOS.
ValueEncryptionBooleano / Clave=valorfalse--valueencryptionIndica si se cifran los valores constantes y las matrices. Los pares clave-valor seleccionan los tipos de valor que se cifran.

Optimizaciones

AtributoTipoPredeterminadoLínea de comandosDescripción
CleanAttributesBooleano / Cadenafalse--cleanattrsIndica si se eliminan los atributos no deseados. Las expresiones regulares seleccionan los nombres completos de los tipos de atributo que se eliminan.
ConstRemovalBooleanofalse--constremovalIndica si se eliminan los campos constantes.
DeadCodeEliminationBooleano / Cadenafalse--deadcodeIndica 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.
DisgregateRemovalBooleanofalse--disgregateremovalIndica si se eliminan los metadatos de propiedades y eventos.
EnumRemovalBooleanofalse--enumremovalIndica si se eliminan los tipos System.Enum.
InlineExpansionBooleanofalse--inlineexpansionIndica si las llamadas a los métodos marcados para la expansión en línea se sustituyen por el cuerpo del método.
SealClassesBooleanofalse--sealIndica si se sellan las clases que no se usan en ninguna cadena de herencia.

Generación de código

AtributoTipoPredeterminadoLínea de comandosDescripción
AddReferencesCadena--addreferenceLista de ensamblados que se añaden como referencias del ensamblado de destino.
FrameworkCadenaNombre de la plataforma de destino que se fuerza para el ensamblado procesado.
GenerateDebugBooleano / Cadenafalse--debugIndica 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.
InstrumentBooleano / Cadenafalse--instrumentIndica si se instrumenta el código. Las expresiones regulares seleccionan los nombres completos de los métodos que se instrumentan.
InstrumentEmptyMethodsBooleanofalse--emptymethodsIndica si se instrumentan los métodos con el cuerpo vacío.
ModuleInitializerBooleano / Cadenafalse--moduleinitializerIndica si se añade código de inicializador de módulo al ensamblado de destino.
ModuleInitializerTargetCadena--moduleinitializerFirma del método estático, sin parámetros, al que se llama después de cargarse el módulo.
ModuleVersionIdBooleano / Cadenafalse--moduleversionidIndica 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

AtributoTipoPredeterminadoLínea de comandosDescripción
AndroidSigningKeyAliasCadena--keyaliasAlias de la clave en el almacén de claves de Android (paquetes APK).
AndroidSigningKeyPassCadena--keypassContraseña de la clave en el almacén de claves de Android (paquetes APK).
AndroidSigningKeyStoreCadena--keystoreArchivo del almacén de claves de Android (paquetes APK).
AndroidSigningStorePassCadena--storepassContraseña del almacén de claves de Android (paquetes APK).
RemoveFilesCadena--removeLista de ensamblados desplegados que se quitan del paquete.
SkipFilesCadena--skipLista de ensamblados desplegados que no se ofuscan.
TakeFilesCadena--takeLista de ensamblados desplegados que se ofuscan.
XapCompressionLevelEntero6--compressNivel de compresión del paquete, de 0 (sin compresión) a 9 (paquetes XAP).

Salidas de la tarea

SalidaDescripción
CommandLineArgsLa línea de comandos pasada a Babel, disponible cuando ProvideCommandLineArgs es true.
ExitCodeEl 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>
Last updated on