Ofuscación declarativa con atributos personalizados

La versión 2.0 de .NET Framework proporciona dos nuevos atributos personalizados diseñados para facilitar la ofuscación automática de ensamblados sin tener que configurar archivos de configuración. En esta sección se describe cómo se pueden usar estos atributos con Dotfuscator. Se supone que está familiarizado con los atributos personalizados y cómo aplicarlos en su lenguaje de desarrollo.

System.Reflection.ObfuscateAssemblyAttribute

Este atributo se usa en el nivel de ensamblado para indicar a Dotfuscator cómo ofuscar el ensamblado en su totalidad. Al configurar la propiedad AssemblyIsPrivate en false se indica a Dotfuscator que ejecute el ensamblado en modo de biblioteca. Si se establece en true, Dotfuscator no ejecutará el ensamblado en el modo de biblioteca y le cambiará el nombre lo máximo posible, incluidos tipos y miembros públicos.

System.Reflection.ObfuscationAttribute

Este atributo se usa en tipos y sus miembros y se indica a Dotfuscator cómo debe ofuscarlos.

Propiedad Feature

Esta propiedad de cadena tiene el valor predeterminado "all". Esta propiedad se proporciona para poder configurar múltiples transformaciones de ofuscación independientemente mediante el marcado de un elemento con varios atributos ObfuscationAttribute, cada uno con una cadena de característica distinta.

Dotfuscator asigna las cadenas de característica "default" y "all" a "renaming".

A continuación se ofrece una lista de otras cadenas de característica que entiende Dotfuscator.

Cadena de característica Acción
renaming atributo que configura el cambio de nombre
controlflow atributo que configura la ofuscación del flujo de control
stringencryption atributo que configura el cifrado de cadena
trigger atributo que configura la limpieza mediante el marcado del elemento anotado como un punto de entrada
conditionalinclude atributo que configura la limpieza mediante la inclusión condicional del elemento anotado

Si es necesario, puede asignar otras cadenas de característica a "renaming" mediante la hoja de propiedades "Cadenas de asignaciones de función" de la ficha Configuración.

Dotfuscator omite atributos con cadenas de característica que no comprende.

Propiedad Exclude

Esta propiedad booleana tiene el valor predeterminado True. Si es True, indica que el elemento marcado se debe excluir de las transformaciones implícitas de la propiedad Feature. Si es False, indica que se debe incluir el elemento marcado.

La versión actual de Dotfuscator admite un valor de la propiedad Exclude para cualquier transformación. Dotfuscator omitirá las reglas que tengan valores Exclude no admitidos. En la lista siguiente se ofrece un resumen.

Cadena de característica Valor de Exclude admitido
renaming True
controlflow True
stringencryption False
trigger False
conditionalinclude False

Propiedad Exclude ApplyToMembers

Esta propiedad booleana tiene el valor predeterminado True. Cuando el atributo se aplica a un ensamblado o tipo, un valor True indica que la operación también se debe aplicar a todos los miembros (incluidos los tipos anidados) de los tipos seleccionados. Si es False, la operación se aplica únicamente a los tipos y no a sus miembros (o tipos anidados).

Habilitar o deshabilitar la ofuscación declarativa

Dotfuscator permite activar o desactivar la ofuscación declarativa para todos los ensamblados de entrada. Si no está habilitada, Dotfuscator omitirá los atributos personalizados relacionados con la ofuscación. También se puede desactivar para ensamblados específicos.

Quitar los atributos de ofuscación declarativa

Dotfuscator puede quitar los atributos de ofuscación cuando se completa el procesamiento, de modo que los ensamblados de salida no contendrán indicios acerca de cómo se han ofuscado. Ambos atributos de ofuscación declarativa incluyen la propiedad booleana "StripAfterObfuscation" cuyo valor predeterminado es True.

Dotfuscator también dispone de opciones de configuración que interactúan con el valor de la propiedad StripAfterObfuscation en el momento de la ofuscación.

La configuración que afecta a la retirada de atributos de ofuscación declarativa y cómo interactúa se resume en la tabla siguiente.

Dotfuscator acepta atributos Dotfuscator quita atributos Propiedad StripAfterObfuscation del atributo Resultado
True o False Quitar atributo
No True Quitar atributo
No False Mantener atributo
No True o False Quitar atributo
No No True o False Mantener atributo

Usar cadenas de asignación de característica

Dotfuscator permite asignar valores incluidos en la propiedad Feature de un atributo de ofuscación a cadenas de característica que comprenda Dotfuscator.

Por ejemplo, puede anotar la aplicación con atributos de ofuscación que hagan referencia a una característica denominada "testmode". De forma predeterminada, Dotfuscator no entenderá esta cadena de característica; por lo tanto, omitirá los atributos. Si posteriormente desea que Dotfuscator use estos atributos para configurar el cambio de nombre y la ofuscación del flujo de control, puede asignar la cadena de característica "testmode" a las cadenas "renaming" y "controlflow" integradas de Dotfuscator.

© 2002-2007 PreEmptive Solutions. Reservados todos los derechos.