Ofuscar la aplicación de Silverlight con Dotfuscator
Acerca de Dotfuscator
Dotfuscator es un ofuscador que dificulta la lectura del código fuente cuando se desensamblan las aplicaciones escritas con .NET Framework. Dotfuscator está disponible en versiones comerciales gratuitas y de pago que vienen con Visual Studio.
La versión gratuita solo está disponible con muchas características limitadas y la suposición de que Visual Studio se está ejecutando, pero cualquier persona con Visual Studio instalado puede usarlo. La versión de pago tiene muchas características de ofuscación poderosas que no están disponibles en la versión gratuita, pero puede ser molesto que se ofrezca a un precio que es difícil de pagar para el público en general.
Dotfuscator puede tener diferentes características, precios y ediciones dependiendo de la versión, así que consulte el siguiente sitio web para obtener más detalles.
Código analizado
Como se mencionó anteriormente, las aplicaciones creadas con .NET Framework pueden leer fácilmente el código fuente original desensamblando, pero lo que realmente sucede es que cuando se desensambla un archivo de ensamblado como se muestra en la figura, se puede reproducir la mayor parte del código fuente original, como espacios de nombres, nombres de clase y nombres de métodos.
Procedimiento de ofuscación
Comience creando la aplicación de Silverlight como de costumbre y haciendo una compilación de versión. Aquí, estamos creando una aplicación que solo coloca dos botones.
En la carpeta Bin\Release de la carpeta donde se encuentra el proyecto, escriba . xap" es un archivo de paquete que resume los programas y archivos usados en las aplicaciones de Silverlight.
En realidad, este archivo está comprimido y compilado como un archivo ZIP, por lo que la extensión es ". zip".
Se ha cambiado a un archivo ZIP.
Al abrir el archivo, contiene un archivo de manifiesto y una DLL. Esta DLL es la versión compilada del programa que se ejecuta como una aplicación.
Por cierto, el archivo DLL también se coloca en la carpeta Release cuando se compila, por lo que esta vez ofuscaremos este archivo.
En el menú de Visual Studio, seleccione Herramientas y, a continuación, seleccione Dotfuscator preventivo y análisis.
Al iniciar por primera vez, se mostrará el cuadro de diálogo "Acuerdo de licencia", así que lea el contenido cuidadosamente, marque "Sí, acepto el acuerdo de licencia" y haga clic en el botón "Aceptar".
Se inicia PreEmptive Dotfuscator And Analytics CE.
Seleccione "Entradas" en el árbol de la izquierda y haga clic en el botón "Agregar entrada".
Seleccione el archivo DLL que generó durante la compilación.
Seleccione el archivo DLL que agregó y desactive Modo de biblioteca > Conversión XAML.
Si se marca el "modo Biblioteca", las clases y métodos definidos en público no se ofuscarán.
Si se marca "Conversión XAML", las clases definidas en XAML se ofuscarán, pero dependiendo de cómo lo cree, provocará un error de inicio, por lo que si se produce, desmárquelo.
Básicamente, todas las clases, métodos, propiedades y nombres de variables están ofuscados, pero si no desea ofuscar un espacio de nombres o clase específica debido a la serialización, seleccione "Cambiar nombre" en el árbol de la izquierda, seleccione la pestaña "Excluir" y verifique el espacio de nombres o clase de destino.
En Reglas integradas, asegúrese de que Campos para Silverlight y WPF UserControls estén marcados. Si comprueba, el campo UserControls se ofuscará y se ejecutará correctamente. Puede desmarcarlo si parece funcionar correctamente incluso después de ofuscar.
Cuando haya terminado, haga clic en el botón "Construir proyecto" de la barra de herramientas.
Si hay cambios en el proyecto, se mostrará el cuadro de diálogo de confirmación de guardar el proyecto, así que haga clic en "Sí" para guardar.
El proyecto se llama ". xml". Los archivos ofuscados se guardan en la misma ubicación.
Espere a que se complete la compilación cuando comience. Tenga en cuenta que cuanto más grande es el programa, más tiempo se tarda en compilar. Cuando se parece a la figura, la compilación está completa.
El campo de mensaje muestra el progreso de la compilación y un breve resultado, como lo ofuscado que estaba.
Si selecciona Resultados en el árbol de la izquierda, puede ver detalles sobre cómo han cambiado los nombres de clase y método.
Bajo los nombres de clase y método, habrá un icono de Dotfuscator y nombres como "a" y "b", que será el nombre ofuscado. Al cambiar el nombre de la clase o el nombre del método a un nombre sin sentido de esta manera, incluso si se desmonta, puede dificultar la lectura del contenido del código fuente.
El archivo ofuscado se crea en una carpeta llamada "Dotfuscated" en la carpeta del archivo .xml guardado en Guardar proyecto. Además del archivo ofuscado, se ha creado un archivo "Map.xml", pero esto es el resultado de la ofuscación y no se utiliza.
Si desmonta el archivo ofuscado, puede ver que algunos nombres de clase y método se han cambiado a "a" o "b".
Esta vez, el proyecto predeterminado creado estaba ofuscado casi como estaba, así que creo que hay una imagen que no está tan ofuscada, pero creo que el efecto de la ofuscación se vuelve más claro porque el número de clases, etc. aumenta a medida que el proyecto crece.
Como acotación al margen, . Las bibliotecas de NET Framework y no están sujetas a cambio de nombre porque son ensamblados que ya están instalados en Windows, por ejemplo.
Silverlight no usa archivos DLL tal cual, por lo que se empaquetan como archivos XAP. Como se mencionó al principio, un archivo XAP es solo un cambio en la extensión del archivo ZIP, por lo que crea un archivo ZIP recopilando los archivos contenidos en el archivo XAP y las DLL ofuscadas.
La creación de un archivo ZIP se puede hacer utilizando las funciones estándar del sistema operativo.
Se crea un archivo ZIP.
La extensión se cambia a '. xap" y si el nombre del archivo es diferente, cámbielo al nombre de archivo del paquete original.
Coloque el archivo XAP en una ubicación de distribución.
Por favor, compruebe la operación y vea si funciona correctamente.
Si no se inicia, verifique hasta que funcione normalmente reduciendo el código ofuscado. Tenga en cuenta que Silverlight a menudo se atasca en asuntos relacionados con XAML.
Aunque las instrucciones no se enumeran aquí, si desea firmar un programa, compilarlo en un estado firmado con retraso, ofusque el ensamblado y, a continuación, vuelva a firmarlo. Incluso si lo ofusca mientras está firmado, el código de firma adjunto en el momento de la compilación y el código de firma después de la ofuscación no coincidirán, por lo que no podrá iniciarlo.
En este artículo, he enumerado los pasos para la versión gratuita, pero si usa la versión paga, puede realizar ofuscación más compleja y evitar el desensamblaje en sí. Sin embargo, la ofuscación tiene el potencial de causar varios efectos adversos, por lo que cuando se realiza la ofuscación, es necesario considerar si funcionará correctamente desde el comienzo del diseño.