Ofuscar aplicaciones creadas con Dotfuscator

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

resumen

Dado que las aplicaciones basadas en .NET Framework se crean en lo que se denomina un lenguaje intermedio común, se pueden leer en un formulario cercano al código fuente original mediante herramientas de desmontaje y similares. En esta sección se describe cómo ofuscar Dotfuscator, el ofuscador que viene con Visual Studio, para ofuscar los nombres de clase y método en un formato que no es fácilmente legible.

Estamos hablando de ello aquí usando Visual Studio 2010, pero también puede usar Dotfuscator en 2005 y 2008.

Dotfuscator を使用して作成したアプリケーションを難読化する

Entorno operativo

Versiones de Visual Studio compatibles

  • 2005
  • 2008
  • 2010

Comprobar la versión de Visual Studio

  • 2005
  • 2008
  • 2010

sustancia

Acerca de Dotfuscator

Dotfuscator es una herramienta de ofuscación que hace que el código fuente sea difícil de leer cuando se desmonta en aplicaciones escritas con .NET Framework. Dotfuscator viene con Visual Studio de forma gratuita y de pago.

La versión gratuita no está disponible a menos que muchas de sus características sean limitadas o se inicie Visual Studio, pero cualquiera puede usarla siempre que tenga instalado Visual Studio. La versión de pago tiene muchas características de ofuscación poderosas que no se encuentran en la versión gratuita, pero se ofrece a un precio que es difícil de pagar para el público en general.

Dotfuscator tiene diferentes características, precios y ediciones dependiendo de la versión, así que consulte la siguiente página de inicio para obtener más detalles.

Procedimiento de ofuscación

難読化していないアプリケーションの逆アセンブル結果

Mencioné anteriormente que las aplicaciones creadas con .NET Framework pueden desmontar y leer fácilmente el código fuente original, pero la situación real es que si desmonta el archivo exe como se muestra en la figura de la derecha, casi puede reproducir el código fuente original, como el espacio de nombres, el nombre de clase, el nombre del método, etc.

Describe los pasos para hacer que estos nombres sean confusos y ofuscados.

Dotfuscator Software Services

Crear una aplicación en Visual Studio y crear un archivo exe es exactamente lo mismo que la forma normal de crearla.

Después de compilar y crear el archivo exe, seleccione Herramientas en el menú visual Studio y, a continuación, seleccione Servicios de software de Dotfuscator.

使用許諾契約書

Cuando comience por primera vez, se muestra el cuadro de diálogo "Acuerdo de licencia" como se muestra en la figura de la derecha, así que lea el contenido cuidadosamente, marque "Sí, estoy de acuerdo con el acuerdo de licencia" y haga clic en el botón "Aceptar".

Dotfuscator Software Services

Se inicia Dotfuscator Software Services.

入力アセンブリの追加

El archivo exe (o dll) que se va a ofuscar no tiene que ser del proyecto abierto actualmente.

Seleccione Conjuntos de entrada en el árbol de la izquierda y haga clic en Conjuntos de entrada a la derecha para hacer clic en el botón ... .

難読化する exe ファイル

Seleccione el archivo exe que desea ofuscar.

追加したアセンブリ

El archivo exe seleccionado se agrega a la lista. Si desea ofuscar varios archivos, haga clic en el botón "..." después de la segunda línea para agregarlos.

プロジェクトのビルド

Una vez que haya seleccionado el exe que desea ofuscar, haga clic en el botón Generar proyecto de la barra de herramientas.

プロジェクトの保存

Si hay algún cambio en el proyecto, se muestra el cuadro de diálogo de confirmación de guardado del proyecto, así que haga clic en "Sí" para guardar.

プロジェクトの保存場所指定

El proyecto se llama ". xml". El archivo exe ofuscado también se guardará en la misma ubicación, así que guarde el archivo .xml en cualquier carpeta.

ビルド

La compilación comenzará y esperará hasta que se complete. Tenga en cuenta que cuanto más grande es el programa, más tiempo lleva construirlo. Si se parece a la figura de la derecha, la compilación se ha completado.

El campo de mensaje muestra resultados simples, como el progreso de la compilación y lo ofuscada que estaba.

難読化結果

Si selecciona "Resultado" en el árbol de la izquierda, puede ver detalles de cómo han cambiado los nombres de clase y método.

Debajo de los nombres de clase y método, hay un icono de Dotfuscator y un nombre como "a" o "b", que es el nombre ofuscado. Al cambiar el nombre de la clase o el nombre del método a un nombre sin sentido como este, puede hacer que el contenido del código fuente sea difícil de leer incluso si está desmontado.

難読化したアセンブリ

Los archivos exe ofuscados se crean en la carpeta de archivos .xml guardados en Save Project, llamada "Dotfuscated", y se crean en ella. Además del archivo exe, se ha creado un archivo "Map .xml", pero este es el resultado de la ofuscación y no debe usarse.

難読化したアセンブリの実行時エラー

Los exofuscados se pueden ejecutar y usar tal cual. Sin embargo, hay casos en los que no se puede iniciar debido a un error desconocido como se muestra en la figura de la derecha.

Esta vez, escribí una aplicación en WPF, pero debido a que el archivo XAML de la primera ventana a mostrar se especifica como una cadena, el cambio de nombre debido a la ofuscación hará que la referencia se pierda, lo que resultará en un error.

Las aplicaciones de Windows Forms hacen referencia a la clase From directamente, por lo que pueden ejecutarse sin errores incluso si están ofuscadas. Sin embargo, si especifica un nombre de clase, un tipo de enumeración, etc. por su nombre, debe tener cuidado porque existe la posibilidad de que se produzca el mismo error.

難読化の除外

Si no desea ofuscar una clase o algo así, seleccione Cambiar nombre en el árbol del lado izquierdo de Dotfuscator y seleccione Excluir en la pestaña central.

Cada espacio de nombres, nombre de clase, etc. se mostrará en la lista de la derecha, así que verifique los elementos que no desea ofuscar.

Aquí, no quiero cambiar el nombre de clase de la ventana que se mostrará primero, así que marque "MainWindow".

難読化から除外されたクラス

Cuando realiza la compilación, puede ver que no hay ningún nombre cambiado debajo del nombre de la clase en MainWindows. (La clase de aplicación se ha convertido a "a")

難読化したアセンブリの実行

Al ejecutar el archivo exe ofuscado, puede ver que la ventana se muestra correctamente.

難読化後の逆アセンブル

Si desmonta el archivo exe ofuscado, puede ver que el nombre de clase y el nombre del método se han cambiado a "a" o "b" correctamente.

Pero como aparte. Las bibliotecas de NET Framework, como los nombres de clase, no están sujetas a cambio de nombre porque son ensamblados que ya están instalados en Windows y en otros lugares.

Esta vez, ofusqué el proyecto predeterminado creado tal como está, por lo que creo que hay una imagen que no está tan ofuscada, pero creo que el efecto de ofuscación se vuelve claro porque el número de clases, etc. aumenta a medida que crece el proyecto.

Además, aunque esta vez hemos incluido el procedimiento en la versión gratuita, la versión de pago permite una ofuscación más compleja y también evita el desmontaje en sí. Sin embargo, la ofuscación tiene varios efectos adversos y potencial para ocurrir, por lo que cuando se realiza la ofuscación, es necesario hacerla mientras se considera si funcionará correctamente desde el comienzo del diseño.