Solución Dotfuscator

Hoy en día, la mayoría de los ofuscadores comerciales usan una técnica de cambio de nombre que aplica identificadores triviales. Normalmente, incluso constan de un único carácter. A medida que el ofuscador procesa el código, selecciona el siguiente identificador trivial disponible que se va a sustituir. Este esquema de cambio de nombre, aparentemente simple, posee una ventaja frente al algoritmo hash o al desplazamiento del juego de caracteres: no se puede invertir. Aunque se mantiene la lógica del programa, los nombres no tienen sentido. En este punto, hemos frustrado la comprensión humana en gran medida. Con identificadores como a, t.bb(), ct y 2s(e4), es difícil que la semántica se convierta en conceptos como IDfactura, direccion.imprimir(), nombreUsuario y deposito(cantidad). En cualquier caso, se puede aplicar ingeniería inversa a la lógica del programa.

Una forma de ofuscación profunda usa Overload Induction, un algoritmo patentado que ha desarrollado PreEmptive Solutions. El cambio de nombre trivial se sigue usando, aunque se agrega un ingenioso efecto. Los identificadores de método se sobrecargan al máximo después de un exhaustivo análisis de ámbito. En lugar de sustituir cada nombre antiguo por uno nuevo, Overload Induction asigna a todos los métodos posibles el mismo nombre. Después de esta ofuscación profunda, la lógica no se destruye pero queda incomprensible. El siguiente ejemplo ilustra la capacidad de la técnica Overload Induction:

Código fuente original antes de la ofuscación
private void CalcPayroll(SpecialList employeeGroup) {
   while (employeeGroup.HasMore()) {
        employee = employeeGroup.GetNext(true);
        employee.UpdateSalary();
        DistributeCheck(employee);
    }
}
Código fuente con ingeniería inversa
después de aplicar la característica
Overload Induction de Dotfuscator
private void a(a b) {
    while (b.a()) {
        a = b.a(true);
        a.a();
        a(a);
    }
}

En el ejemplo se muestra que el código ofuscado es más compacto. Un efecto secundario positivo del cambio de nombre es la reducción del tamaño. Por ejemplo, si nombre tiene 20 caracteres de longitud, al cambiarlo a a(), se ahorra mucho espacio (en concreto, 19 caracteres). También se ahorra espacio al conservar las entradas del montón de cadena. Al cambiar todos los nombres a “a”, “a” se almacena sólo una vez y cada método o campo cuyo nombre ha cambiado a “a” puede señalar a él. Overload Induction mejora este efecto porque continuamente se vuelven a usar los identificadores más cortos. Normalmente, el 70% de los métodos de un proyecto al que se ha aplicado Overload Induction se llamarán a().

Durante su procesamiento, Dotfuscator quita la información de depuración y metadatos no esenciales de un archivo MSIL. Además de mejorar la protección y la seguridad, contribuye a reducir el tamaño de los archivos MSIL.

Es importante comprender que la ofuscación es un proceso que se aplica a código MSIL compilado, no a código fuente. El entorno de desarrollo y las herramientas no se modifican para ajustarse al cambio de nombre. El código fuente nunca se modifica de ninguna manera, ni siquiera se lee. El código MSIL ofuscado es funcionalmente equivalente al código MSIL tradicional y se ejecutará en Common Language Runtime (CLR) con idéntico resultado. (Sin embargo, lo contrario no sucede. Aunque fuera posible descompilar código MSIL ofuscado en profundidad, habría diferencias semánticas importantes con respecto al código fuente original.) La siguiente ilustración muestra el flujo del proceso de ofuscación de Dotfuscator.

PreEmptive Solutions Inc. ha estado protegiendo y mejorando el software compilado intermedio desde 1996, comenzando con sus herramientas DashO para Java. Sus productos han disfrutado de un lugar predominante en el mercado gracias a su eficacia, versatilidad y características exclusivas patentadas.

Dotfuscator se ofrece como una familia de herramientas que permite aprovechar las ventajas de la eficaz plataforma .NET sin preocuparse de la protección de la propiedad intelectual. Dotfuscator tiene tres ediciones:

Dotfuscator Community Edition es una versión gratuita que ofrece ofuscación básica. Su finalidad principal es cambiar el nombre de los identificadores, dificultando la ingeniería inversa. Dotfuscator Community Edition incorpora tecnologías avanzadas para facilitar esta protección. Además, se obtiene reducción de tamaño como resultado del cambio de nombre a identificadores triviales).

Dotfuscator Community Edition:

  • No funciona aparte de Visual Studio, lo que significa que no se puede usar en un entorno de compilación comercial.
  • No cambia el nombre de los tipos y métodos genéricos de .NET 2.0.
  • No ofusca el código administrado que se ha escrito para la integración de Microsoft Office.
  • No ofusca el código administrado diseñado para ejecutarse en Microsoft SQL Server 2005.
  • No admite el modo de biblioteca más que como opción global (el modo de biblioteca está activado o desactivado para todos los ensamblados de entrada).
  • No admite la configuración de ofuscación declarativa más que como opción global (la configuración de ofuscación declarativa está activada o desactivada para todos los ensamblados de entrada).
  • No admite aplicaciones C++ dirigidas a CLR.

Si necesita superar estos límites, póngase en contacto con PreEmptive Solutions para obtener más información acerca de Dotfuscator Professional Edition.

Las características disponibles para los usuarios con licencia de Dotfuscator Community Edition se indican con un icono.

Dotfuscator Enhanced Community Edition está disponible como descarga gratuita para los usuarios registrados de Dotfuscator Community Edition. Esta edición incluye las características de Dotfuscator Community Edition y agrega:

  • Integración profunda con Visual Studio.
  • Compatibilidad con la mejora de las aplicaciones con inteligencia en tiempo de ejecución mediante SO-signal.
  • Compatibilidad con la detección y notificación de manipulación de las aplicaciones mediante SO-signal.

Las características que no se incluyen en Community Edition y que están incluidas en Dotfuscator Enhanced Community Edition se indican con un icono.

Dotfuscator Professional Edition incluye las características de Dotfuscator Community Edition y muchas más. Es el ofuscador líder del sector y se ha diseñado para organizaciones que producen aplicaciones comerciales y empresariales. Dotfuscator Professional Edition proporciona una protección superior para frustrar la acción de descompilación, reducción de tamaño avanzada para ahorrar memoria y mejorar los tiempos de carga, integración profunda con Visual Studio para obtener una configuración transparente, ofuscación incremental para publicar revisiones, creación de marcas de agua para etiquetar los ensamblados de forma única y soporte técnico por teléfono y correo electrónico. Las características disponibles para los usuarios con licencia de Dotfuscator Professional Edition se indican con un icono.

A continuación se ofrece una comparación paralela de las características de los productos de Dotfuscator:

Características Professional Edition Dotfuscator Enhanced Community Edition Community Edition
Compactación/limpieza    
Amplia compatibilidad con .NET Compact Framework    
Ofuscación del flujo de control    
Mejora de Overload Induction    
Ofuscación incremental    
Ofuscación sin problemas de los archivos DLL satélite    
Cifrado de cadena    
Vinculación de ensamblados    
Compatibilidad con los eventos anteriores y posteriores a la compilación    
Volver a firmar ensamblados con nombre seguro de forma automática    
Integración con MSBuild    
Marcas de agua en el software    
Ejecución independiente de Visual Studio    
Varios esquemas de cambio de nombre    
Compatibilidad con la depuración de PDB    
Cambio de prefijo    
Compatibilidad con ensamblados .NET de C++    
Traducción automatizada de la pila de seguimiento    
Archivos de informe XML/HTML    
Compatibilidad con tipos y métodos genéricos    
Integración con scripts de compilación    
Integración profunda con Visual Studio  
Habilita la inteligencia en tiempo de ejecución con SO-signal  
Habilita la detección y notificación de manipulación de las aplicaciones con SO-signal  
Ofuscación de ensamblados cruzados
Eliminación de metadatos no usados
Cambio de nombre
Compatibilidad con ofuscación declarativa

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