Referencia del paquete
Todas las propiedades, los elementos y los destinos de MSBuild que define el paquete Babel.Obfuscator, y la asignación entre las propiedades del paquete y los atributos de la tarea Babel.
Propiedades del paquete
Las propiedades siguientes controlan el propio paquete. Los ajustes de ofuscación figuran en la tabla Asignación de propiedades.
| Propiedad | Predeterminado | Descripción |
|---|---|---|
BabelEnabled | true | Interruptor general. Cuando es false, no se ejecuta ningún destino de Babel, incluidas las adaptaciones de la publicación. |
BabelPublishEnabled | $(BabelEnabled) | Indica si los ensamblados combinados e incrustados se quitan del conjunto de publicación. |
BabelUpdateDependencyFile | $(BabelEnabled) | Indica si los archivos .deps.json de compilación y de publicación se actualizan después de la ofuscación. |
BabelOverrideCompile | true | Indica si el paquete inserta el paso de ofuscación después de CoreCompile. Establézcala en false para conectar usted mismo el destino ObfuscateBuild. |
RunBabelAfterBuild | false | Cuando es true, Babel se ejecuta al final de la compilación sobre $(TargetPath) en lugar de sobre el ensamblado intermedio. |
BabelBeforeTargets | Ejecuta el paso de ofuscación antes del destino indicado y desactiva la ubicación predeterminada. | |
BabelAfterTargets | Ejecuta el paso de ofuscación después del destino indicado y desactiva la ubicación predeterminada. | |
BabelPackageDir | raíz del paquete | Carpeta raíz del paquete extraído. |
BabelTaskDir | según el host | Carpeta desde la que se cargan la tarea Babel y las herramientas; consulte Selección de las herramientas de compilación. |
BabelPath | $(BabelTaskDir) | Carpeta del ejecutable de Babel que se ejecuta (atributo ToolPath de la tarea). |
BabelExe | Nombre del ejecutable de Babel, babel.exe o babel.dll (atributo ToolExe de la tarea). | |
BabelInputFile | ensamblado intermedio | Ensamblado que se ofusca. Lo calcula el paquete; reemplácelo en un destino de ajustes. |
BabelOutputFile | $(BabelInputFile) | Salida ofuscada. La calcula el paquete; reemplácela en un destino de ajustes. |
BabelLicense | babel.licenses encontrado en la carpeta del proyecto o en una carpeta superior | Ruta del archivo de licencia, clave de licencia o clave de usuario con el prefijo floating:. |
BabelLicenseDir | Carpeta en la que se encontró babel.licenses, establecida por el paquete. | |
SymbolsRenaming | true | Activa o desactiva a la vez todas las funciones de renombrado. |
NoConfiguration | true | Indica si Babel ignora su archivo de configuración. |
GenerateDebug | true cuando existe un PDB | Indica si se generan símbolos de depuración para el ensamblado ofuscado. |
CopyOutputSymbolsToPublishDirectory | false en Release | Propiedad estándar del SDK; el paquete la desactiva en Release para que no se publiquen los archivos PDB. |
BabelProvideCommandLineArgs | false | Escribe la línea de comandos de Babel en el registro y en el elemento @(BabelCommandLineArgs). |
BabelWarningsAsErrors | Códigos de advertencia que se notifican como errores. Establézcala en W00000 para que fallen las compilaciones que se ejecutan en modo de evaluación. | |
BabelWarningsAsInfos | Códigos de advertencia que se notifican como mensajes informativos. | |
BabelWarningsToIgnore | Códigos de advertencia que se suprimen. | |
BabelExitCode | Salida: código de salida de la tarea Babel, disponible después de CoreObfuscate. |
Elementos del paquete
| Elemento | Descripción |
|---|---|
BabelRules | Archivos de reglas XML. El archivo babelRules.xml de la carpeta del proyecto se añade automáticamente. |
MergeAssembly | Ensamblados que se combinan con el ensamblado de destino. |
EmbedAssembly | Ensamblados que se incrustan en el ensamblado de destino. |
MapInFile | Archivos map XML de ensamblados ya ofuscados. |
BabelPlugin | Ensamblados de complementos que se cargan. |
BabelSearchDirectories | Directorios de búsqueda de ensamblados. Se calculan a partir de las referencias del proyecto; reemplácelos o amplíelos en un destino de ajustes. |
BabelTargetReferences | Entradas de búsqueda adicionales que se pasan como referencias. |
AddReferences | Ensamblados que se añaden como referencias del ensamblado ofuscado. |
SatelliteAssembly | Ensamblados satélite que se procesan. |
XmlDocumentationFile | Archivos de documentación XML que se procesan junto con el ensamblado. |
BabelCommandLineArgs | Salida: la línea de comandos pasada a Babel, cuando BabelProvideCommandLineArgs es true. |
Destinos
| Destino | Descripción |
|---|---|
ObfuscateBuild | El paso de ofuscación insertado en la compilación. Ejecuta ObfuscateSettings y después Obfuscate. |
ObfuscateSettings | Prepara la configuración de la tarea Babel ejecutando los destinos de ajustes que figuran a continuación. |
ObfuscateDefaultSettings | Aplica los valores predeterminados de renombrado, busca el archivo de licencia, añade babelRules.xml y construye los directorios de búsqueda. |
ObfuscateFrameworkSettings | Selecciona el ensamblado que se procesa: el ensamblado intermedio, o $(TargetPath) cuando RunBabelAfterBuild es true. |
ObfuscateSetupBabelFiles | Establece BabelInputFile y BabelOutputFile, y activa GenerateDebug cuando existe un PDB. |
ObfuscateCustomSettings, SetupObfuscate, ConfigureBabel | Destinos vacíos: redefínalos para ajustar la configuración calculada antes de que se ejecute Babel. |
Obfuscate | Ejecuta BeforeObfuscate, CoreObfuscate y AfterObfuscate. |
BeforeObfuscate | Destino vacío: redefínalo para ejecutar tareas justo antes de la tarea Babel. |
CoreObfuscate | Ejecuta la tarea Babel. No lo redefina. |
AfterObfuscate | Destino vacío: redefínalo para ejecutar tareas justo después de la tarea Babel. |
UpdateBabelBuildDependencyFile | Después de GenerateBuildDependencyFile: quita del .deps.json de compilación los ensamblados combinados e incrustados y el paquete. |
UpdateBabelPublishDependencyFile | Después de GeneratePublishDependencyFile: lo mismo para el .deps.json de publicación. |
UpdateBabelFilesToPublish | Después de ComputeFilesToPublish: quita del conjunto de publicación los ensamblados combinados e incrustados. |
OverrideCompileWithBabel | Después de PrepareForBuild: inserta ObfuscateBuild después de CoreCompile, salvo que el paso se haya movido o que se trate de una compilación en tiempo de diseño. |
EnableObfuscationFlag | Lo desencadena la compilación: activa ObfuscateBuild solo cuando el compilador se ha ejecutado realmente. |
Asignación de propiedades
La tabla asigna cada atributo de la tarea Babel a la propiedad o al elemento de MSBuild que lee el paquete. Las propiedades aceptan los mismos valores que la opción correspondiente de la línea de comandos. Los atributos marcados con 12.0 se añadieron en la versión 12.
| Atributo de la tarea Babel | Tipo | Propiedad o elemento del paquete |
|---|---|---|
AddReferences | Elemento | @(AddReferences) |
AndroidSigningKeyAlias | Propiedad | AndroidSigningKeyAlias |
AndroidSigningKeyPass | Propiedad | AndroidSigningKeyPass |
AndroidSigningKeyStore | Propiedad | AndroidSigningKeyStore |
AndroidSigningStorePass | Propiedad | AndroidSigningStorePass |
BabelDirectory | Propiedad | BabelDirectory |
CleanAttributes | Propiedad | CleanAttributes |
ConstRemoval | Propiedad | ConstRemoval |
ControlFlowIterations | Propiedad | ControlFlowIterations (ILIterations se acepta como alias) |
ControlFlowObfuscation | Propiedad | ControlFlowObfuscation |
CopyAttributes | Propiedad | MergeCopyAttributes |
DbgHelpDllDir | Propiedad | DbgHelpDllDir |
DeadCodeElimination | Propiedad | DeadCodeElimination |
DebuggingProtection | Propiedad | DebuggingProtection |
DependenciesManifest | Propiedad | DependenciesManifest |
DetectIfObfuscated | Propiedad | DetectIfObfuscated |
DisgregateRemoval | Propiedad | DisgregateRemoval |
DynamicProxy | Propiedad | DynamicProxy |
DynamicProxyCallFilters | Propiedad | DynamicProxyCallFilters |
EmbedAssemblies | Elemento | @(EmbedAssembly) |
EmitInvalidOpcodes | Propiedad | EmitInvalidOpcodes |
EnableObfuscationAgent | Propiedad | EnableObfuscationAgent |
EnumRemoval | Propiedad | EnumRemoval |
FlattenNamespaces | Propiedad | FlattenNamespaces |
Framework | Propiedad | Framework |
GenerateDebug | Propiedad | GenerateDebug |
GenerateLogFile | Propiedad | GenerateLogFile |
GenerateMapOutFile | Propiedad | GenerateMapOutFile |
InlineExpansion | Propiedad | InlineExpansion |
InputFile | Propiedad | BabelInputFile |
Instrument | Propiedad | BabelInstrument |
InstrumentEmptyMethods | Propiedad | InstrumentEmptyMethods |
Internalize | Propiedad | MergeInternalize |
KeyContainer | Propiedad | KeyContainerName |
KeyFile | Propiedad | KeyOriginatorFile |
KeyPwd | Propiedad | SigningCertPassword |
License | Propiedad | BabelLicense |
LogFile | Propiedad | BabelLogFile |
MakeProject | Propiedad | MakeBabelProjectFile |
MapInFiles | Elemento | @(MapInFile) |
MapOutFile | Propiedad | BabelMapOutFile |
MergeAssemblies | Elemento | @(MergeAssembly) |
ModuleInitializer | Propiedad | ModuleInitializer |
ModuleInitializerTarget | Propiedad | ModuleInitializerTarget |
ModuleVersionId | Propiedad | ModuleVersionId |
MsilEncryption | Propiedad | MsilEncryption |
NameLength | Propiedad | NameLength |
NamePrefix | Propiedad | NamePrefix |
NoConfiguration | Propiedad | NoConfiguration |
NoWarnings | Propiedad | BabelWarningsToIgnore |
ObfuscateEvents | Propiedad | ObfuscateEvents |
ObfuscateFields | Propiedad | ObfuscateFields |
ObfuscateMethods | Propiedad | ObfuscateMethods |
ObfuscateParameters | Propiedad | ObfuscateParameters |
ObfuscateProperties | Propiedad | ObfuscateProperties |
ObfuscateTypes | Propiedad | ObfuscateTypes |
ObfuscateXaml | Propiedad | ObfuscateXaml |
OutputFile | Propiedad | BabelOutputFile |
OverloadedRenaming | Propiedad | OverloadedRenaming |
PdbFile | Propiedad | PdbFile |
PdbPwd | Propiedad | PdbPwd |
Plugins | Elemento | @(BabelPlugin) |
PluginsArguments | Propiedad | PluginsArguments |
ProvideCommandLineArgs | Propiedad | BabelProvideCommandLineArgs |
RandomSeed | Propiedad | RandomSeed |
References | Elemento | @(BabelTargetReferences) |
RemoveFiles | Propiedad | BabelRemoveFiles |
ResourceEncryption | Propiedad | ResourceEncryption |
RulesFiles | Elemento | @(BabelRules) |
SatelliteAssemblies | Elemento | @(SatelliteAssembly) |
SealClasses | Propiedad | SealClasses |
SearchDirectories | Elemento | @(BabelSearchDirectories) |
SearchSatelliteAssemblies | Propiedad | SearchSatelliteAssemblies |
ShowLogo | Propiedad | ShowLogo |
ShowStatistics | Propiedad | ShowStatistics |
SingleFile | Propiedad | PublishSingleFile (propiedad estándar del SDK) |
SkipFiles | Propiedad | BabelSkipFiles |
StatisticsFile | Propiedad | StatisticsFile |
StringEncryption | Propiedad | StringEncryption |
SuppressIldasm | Propiedad | SuppressIldasm |
SuppressReflection | Propiedad | SuppressReflection |
TakeFiles | Propiedad | BabelTakeFiles |
TamperingDetection | Propiedad | TamperingDetection |
TargetAssemblyName | Propiedad | TargetAssemblyName |
ToolExe | Propiedad | BabelExe |
ToolPath | Propiedad | BabelPath |
Trace | Propiedad | Trace |
TrustedBundle 12.0 | Propiedad | TrustedBundle |
TrustedSigner 12.0 | Propiedad | TrustedSigner (varias huellas digitales separadas por ;) |
TrustedTeam 12.0 | Propiedad | TrustedTeam |
UnicodeNormalization | Propiedad | UnicodeNormalization |
Use | Propiedad | Use |
ValueEncryption | Propiedad | ValueEncryption |
VerboseLevel | Propiedad | VerboseLevel |
VirtualFunctions | Propiedad | VirtualFunctions |
WarningsAsErrors | Propiedad | BabelWarningsAsErrors |
WarningsAsInfos | Propiedad | BabelWarningsAsInfos |
XapCompressionLevel | Propiedad | XapCompressionLevel |
XmlDocFiles | Elemento | @(XmlDocumentationFile) |
XmlRules | Propiedad | XmlRules |
Establecer el algoritmo de cifrado de cadenas
La propiedad StringEncryption del paquete activa el cifrado de cadenas y selecciona el algoritmo, exactamente igual que la opción --stringencryption de la línea de comandos. Los valores aceptados son xor, hash, stream y custom (consulte Cifrado de cadenas para ver la descripción de cada uno). El valor booleano true activa el cifrado de cadenas con el algoritmo predeterminado, mientras que un nombre de algoritmo lo activa y además selecciona ese algoritmo.
Por ejemplo, para cifrar las cadenas con el algoritmo STREAM (cifrado autenticado cadena por cadena, totalmente administrado, compatible con AOT, recorte y FIPS, y admitido desde .NET Framework hasta .NET 10, incluidos Android, iOS y MAUI), añada lo siguiente a su archivo de proyecto:
<PropertyGroup>
<StringEncryption>stream</StringEncryption>
</PropertyGroup>El algoritmo STREAM Ultimate no está incluido en las ediciones inferiores: con ellas, stream recurre al algoritmo predeterminado.
En los proyectos .NET para Android, iOS y MAUI, ejecute la ofuscación como una pasada que solo cifra las cadenas, de modo que los nombres de los tipos y de los miembros permanezcan intactos para la capa de interoperabilidad de la plataforma.