Como proteger tus programas ofuscando el código en C#

Content Protection by DMCA.com

Ahora les traigo como proteger sus programas hechos en C# ofuscando el código, ya que si trabajas con bases de datos e inicios de sesión te sera de utilidad añadir este tipo de seguridad a tus programas, puesto que no se sabe si alguien que tenga conocimientos puede aplicar lo que llamamos ingeniería inversa que no es otra cosa que de-compilar tu programa y así acceder al código fuente, donde puede hacer y deshacer a su antojo, encontrar sus vulnerabilidades e incluso robar tus métodos para su propio software.

Aqui te presento un ejemplo. Este es un programa como los que todos hemos hecho alguna vez donde tienes un Form y para acceder a otro debes de ingresar tus credenciales, en este ejemplo tengo ya tengo definido un usuario y una contraseña y para “iniciar sesion” hay que introducir los datos tal y como esta declarados. Al momento puede parecer que si olvidas los datos ya no puedes acceder puesto que no los guarda en una base de datos. Pero usando el programa ILSpy podemos decompilar el ejemplo y acceder al codigo fuente.

ConfuserEx

Ahora utilizando el Software ConfuserEx v1.0.0 que es gratuito desde su sitio oficial, podemos ofuscar nuestra aplicación. Bueno aqui va una guia basica para iniciar el proceso. A continuación veras la interfaz principal del programa.

1.- La barra principal de Archivo, hace lo común: Crear, Guardar, Abrir archivos, y tiene una barra de herramientas.

2.- Base Directory: Es el directorio donde se por lo regular se encuentra tu ejecutable sin ofuscar, por lo regular es la carpeta de salida de tu solución.

3.- Output Directory: Es la carpeta de salida de tus archivos ofuscados, por lo regular es es tu directorio base seguido de un /Confused que se añade automáticamente cuanto declaras el “Base Directory”.

4.- Seed: Literalmente la semilla, es una palabra clave o combinación de letras y números que tu quieras, si dejas este campo en blanco, el programa utilizara una semilla al azar.

5.- Lista de archivos: En este espacio se listan los archivos a ofuscar, ya sean .exe o .dll, basta con arrastrar y soltar tus archivos en el espacio para añadirlos.

Este es un software libre y puedes descargarlo GRATIS desde aqui:  ConfuserEx v1.1


Ahora empecemos

Como podemos ver en el código, están mis variables con los datos del usuario, ademas de que cada clase es comprensible, por lo que cualquiera que des-compile tu programa podrá ver los valores de cada variable, en caso de usar una base de datos podrán ver su nombre, el usuario y la contraseña (en el caso de MySQL almenos).

 

Una vez que ya tienes tu solución completa, la compilas (generas .exe y sus dependencias .dll). Como se ven en la imagen.

Ahora abrimos el programa ConfuserEx v1. y configuramos los directorios como lo explique anteriormente.

Ya teniendo los directorios y ‘Seed’ (Opcional), arrastramos y soltamos los archivos .exe y .dll a la zona que dice ‘Drag input modules here’ cabe aclarar que estas librerias deben de utilizar la plataforma .NET, si tu proyecto utiliza librerias de C++ ó Java estas no son compatibles con ConfuserEx.

Módulos importados en ConfuserEx

Ya teniendo los módulos en el programa, pasamos a la pestaña “Settings”, donde vemos lo siguiente:

  1. Se ven los módulos que habíamos importado anteriormente.
  2. Las reglas que se aplican a cada modulo, por defecto no esta ninguna, pero pulsando el boton (+) podemos añadir una.
  3. Edición de reglas,1 (+) te permite agregar una nueva regla, 2 (-) elimina la regla, (3) modifica los parámetros de una regla.

Añadimos añadimos una regla con el botón (+) y nos aparece una regla llamada “true”, y utilizando el botón de edición abriremos una ventana con propiedades de la regla, no modificaremos nada, únicamente el campo “Preset” cambiamos el valor a “Maximum”, y aplicamos los mismos pasos a todos lo módulos (.dll ó .exe) que tengamos.

Ventana de edición de una regla.

Para finalizar nos dirigimos a “Protect!”, donde ya solo damos clic al botón “Protect!” e iniciara el proceso.

Al finalizar en la carpeta de salida (Output Directory), obtenemos los módulos ya ofuscados y si utilizamos un de-compilador podremos ver que las clases tienen diferentes nombres, y es prácticamente imposible entender su contenido, entonces el resultado que obtenemos es el esperado ya que si alguien de-compila nuestro programa no podrá entender nada y nuestro programa seguirá funcionando normalmente.

Si tienes dudas, dejalas en los comentarios y te ayudaremos a resolverlas. Date una vuelta por otras entradas de este blog y encuentra algo de tu interes.

Estudiante de ingeniería en sistemas computacionales, Técnico en programación. Tengo experiencia en Android Xamarin, programación en Unity con C# y Desarrollo de aplicaciones con Windows Forms. CEO & Founder de Gatosan Software.