Ofuscar aplicaciones creadas con Dotfuscator
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.
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.
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".
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 ... .
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.