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

Agente de ofuscación

Durante el proceso de ofuscación, Babel puede realizar una serie de tareas basadas en un conjunto de reglas predefinidas, conocido como agente de ofuscación.

El agente está diseñado para evitar los problemas habituales que puede introducir la ofuscación y que podrían dejar inservible el ensamblado resultante. Por ejemplo, el agente puede garantizar que determinados símbolos, como los que se usan mediante reflexión, no se ofusquen. El motivo es que la ofuscación de estos símbolos puede causar problemas con el entorno de ejecución y provocar errores o cierres inesperados.

Para ello, el agente ejecuta una serie de tareas sobre el ensamblado de destino. Estas tareas están preconfiguradas y su complejidad varía: algunas son sencillas, como comprobar los campos de los tipos serializables, mientras que otras emplean técnicas más avanzadas, como el análisis estático del código MSIL.

Esta es la lista de nombres de las tareas del agente disponibles en Babel Obfuscator

Nombre de la tareaDescripción
Base typesEvita el renombrado de los tipos derivados de un tipo base especificado
Code analysisEvita el renombrado de los tipos reservados al análisis de código
Dynamic languageEvita el renombrado de los símbolos que usa el entorno de ejecución de lenguajes dinámicos
Exposed attributesEvita el renombrado de los símbolos que exponen determinados atributos
Razor webappGestiona la ofuscación de las aplicaciones web Razor
Reflected enumsEvita el renombrado de los tipos de enumeración que se usan mediante reflexión
Reflected stringsEvita la ofuscación de las cadenas que se usan mediante reflexión
Reflected typesEvita el renombrado de los tipos que se usan mediante reflexión
Serializable typesEvita el renombrado de los tipos serializables
WinRT typesEvita el renombrado de los tipos privados de WinRT

Las tareas del agente de ofuscación se actualizan con cada nueva versión del producto. Así, Babel está siempre al día de las reglas de diseño más recientes del CLR y puede determinar con precisión qué símbolos deben ofuscarse y cuáles no.

Al seguir estas reglas predefinidas, Babel Obfuscator puede garantizar que el código ofuscado siga siendo plenamente funcional y no presente problemas que puedan impedir el funcionamiento de la aplicación.

En conjunto, el agente de ofuscación es un componente fundamental de Babel que contribuye a proteger las aplicaciones .NET al impedir que los nombres de los símbolos se ofusquen infringiendo las reglas de diseño del CLR.

Anular las reglas del agente

El agente de ofuscación está activado de forma predeterminada y conviene dejarlo activado siempre que sea posible para que la ofuscación se realice correctamente. En general no se recomienda desactivar el agente, porque puede causar problemas con el entorno de ejecución y provocar errores o cierres inesperados de la aplicación. Sin embargo, en algunos casos el usuario puede querer desactivar determinadas tareas del agente para obtener un resultado de ofuscación concreto.

Es importante tener en cuenta que las tareas del agente se ejecutan después de la fase de procesamiento de las reglas. Esto significa que la tarea del agente anulará cualquier regla XML personalizada que no se haya impuesto sobre un miembro. Por tanto, conviene valorar con cuidado el efecto de desactivar o personalizar las tareas del agente antes de cambiar los ajustes predeterminados.

Es posible omitir una tarea concreta del agente mediante reglas XML. Para ello se define una regla de exclusión dirigida a la función agent que indique los nombres de las tareas que se van a omitir en el elemento TaskNameList, hijo del elemento Properties de la regla. De este modo, las tareas indicadas no se ejecutan durante la ofuscación.

Por ejemplo, para desactivar las tareas Serializable types y Reflected strings, se definiría una regla XML como esta:

<Rule name="rule1" feature="agent" exclude="true"> <Pattern>ACME.Data.*</Pattern> <Properties> <TaskNameList>Serializable types;Reflected strings</TaskNameList> </Properties> </Rule>

En esta regla, dirigida a la función «agent», el atributo exclude tiene el valor «true», lo que indica a Babel Obfuscator que no ejecute las tareas del agente Serializable types y Reflected strings al procesar el ensamblado.

No siempre es viable impedir que una tarea se ejecute, porque puede dar lugar a problemas imprevistos en tiempo de ejecución. Por eso, una forma de obtener el resultado de ofuscación deseado para un símbolo concreto es usar una regla XML que se impone al establecer el atributo «locked» en «true», lo que impide que el agente la anule.

<Rule name="rule1" feature="renaming" exclude="false" locked="true"> <Target>Classes</Target> <Pattern>ACME.Data.*</Pattern> <Description>Force renaming of all types in ACME.Data namespace, including serializable ones. </Description> </Rule>

Esta regla impone el renombrado de todas las clases del espacio de nombres ACME.Data, incluidos todos los tipos serializables.

Last updated on