Skip to Content
Nueva versión 12 disponible 🎉
ObfuscatorReglas de ofuscaciónAtributos personalizados

Atributos personalizados

Babel admite la ofuscación declarativa mediante los atributos personalizados System.Reflection.ObfuscationAttribute y System.Reflection.ObfuscateAssemblyAttribute que proporcionan .NET Framework y .NET.

El atributo ObfuscateAssembly

System.Reflection.ObfuscateAssemblyAttribute es un atributo de nivel de ensamblado que indica a Babel Obfuscator que use las reglas de ofuscación reservadas a los ensamblados privados.

Un ensamblado privado es un ensamblado que no se va a usar como biblioteca: ningún otro componente de software lo utilizará. Babel ofusca por completo los ensamblados privados, lo que supone renombrar todos los símbolos públicos.

[assembly: ObfuscateAssembly(true)]

El argumento booleano del constructor assemblyIsPrivate=true indica a Babel que el ensamblado se usa dentro del ámbito de una sola aplicación y que la interfaz pública se puede renombrar sin riesgo.

El atributo Obfuscation

El atributo System.Reflection.ObfuscationAttribute se puede aplicar a miembros del ensamblado, como tipos, métodos, eventos, propiedades y campos, para configurar la acción que se realiza con una función de ofuscación concreta.

El atributo Obfuscation tiene las propiedades siguientes:

Feature

La propiedad Feature asigna un valor de cadena a una función concreta del ofuscador o a una lista de funciones. El valor predeterminado de la propiedad Feature es «all».

Babel usa «all» para referirse al conjunto completo de funciones disponibles y «default» para referirse a la función de renombrado.

Para obtener más información, consulte la tabla de funciones de ofuscación.

Exclude

Indica si la función de ofuscación debe excluirse para el miembro asociado.

ApplyToMembers

Especifica si la acción que realiza el ofuscador sobre el tipo asociado debe aplicarse a todos sus miembros.

StripAfterObfuscation

Especifica si el atributo debe eliminarse después del procesamiento.

El ejemplo de código siguiente muestra cómo usar ObfuscationAttribute en un método para activar el cifrado de código:

[Obfuscation(Feature="msil encryption", Exclude=false)] public string DoSomething() {

Sintaxis extendida de Feature

Babel Obfuscator admite una sintaxis extendida para las cadenas de función, que permite establecer las propiedades de una función como una lista de pares clave-valor después del nombre de cada función.

[Obfuscation(Feature="msil encryption:source=opt;cache=true", Exclude=false)]#

La sintaxis extendida de Feature permite aplicar ObfuscationAttribute en el nivel de ensamblado para configurar las funciones de todo el ensamblado:

Renombrado

[assembly: Obfuscation(Feature="renaming:flatten namespaces=ACME.Test.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:flattenNamespaces=ACME.Data.*", Exclude=false)] [assembly: Obfuscation(Feature="renaming:internalize=true;rename parameters=true", Exclude=false)] [assembly: Obfuscation(Feature="renaming:overloaded=true;unicode=false", Exclude=false)] [assembly: Obfuscation(Feature="renaming:name length=5;name prefix=Acme_", Exclude=false)]

Agente de ofuscación

Desactivar el agente de ofuscación para las tareas Serializable types y Reflected enums.

[assembly: Obfuscation(Feature="agent:tasknamelist=Serializable types,Reflected enums", Exclude=true)]

Cifrado de valores

Cifra los valores y las matrices de los métodos que tienen entre 10 y 100 instrucciones.

[assembly: Obfuscation(Feature="value encryption:min instruction count=10; max instruction count=100", Exclude=false)]

El atributo Obfuscation no basta por sí solo para activar la función elegida. El atributo solo surte efecto si la función está activada de forma global en la configuración.

Otros ejemplos

No ofuscar el código generado por el compilador.

[assembly: Obfuscation(Feature="all:compilergenerated=true", Exclude=true)]
Last updated on