Ofuscar la aplicación de Silverlight con Dotfuscator

Actualización de la página :
Fecha de creación de la página :

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.

Dotfuscator

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.

Release ビルド

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.

XAP ファイル

En realidad, este archivo está comprimido y compilado como un archivo ZIP, por lo que la extensión es ". zip".

拡張子を .zip に変更

Se ha cambiado a un archivo ZIP.

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.

ZIP ファイルの中身

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".

PreEmptive Dotfuscator And Analytics を選択

Se inicia PreEmptive Dotfuscator And Analytics CE.

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.

ビルドで生成した DLL ファイルを選択

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.

「ライブラリ モード」「XAML の変換」のチェックを外す

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.

Silverlight および WPF UserControls のフィールド

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.

ファイルを ZIP 化

Se crea un archivo ZIP.

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.

XAP ファイルに変更

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.