Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=5dacb567-cb53-4a2c-800d-6de193909cee

Ofuscación: cómo proteger el código de tus aplicaciones .NET

En un post anterior vimos cómo era posible recuperar el código de cualquier programa de .NET a partir de su .exe o .dll usando un descompilador. Hoy vamos a ver cómo podemos tratar de evitarlo gracias al uso de un ofuscador de código.

Los ofuscadores de código, como su propio nombre indica, tienen la capacidad de complicar mucho el código original de modo que, aunque no cambia lo que hace el programa, y el computador es capaz de ejecutarlo sin problemas, cuando un humano lee el código fuente resultante es tan complejo que no es capaz de seguirlo.

Primero te cuento en este vídeo cómo puedes lograrlo y, a continuación, te dejo algunas consideraciones importantes sobre estas técnicas de ofuscación, el código de ejemplo, y los enlaces mencionados.

¡Vamos allá!

Debes tener en cuenta que la ofuscación no impide descompilar el código, sólo lo complica mucho, por lo que si lo que quieres ocultar es un detalle muy concreto (como una protección o licencia) no te servirá de mucho ante un "cracker" con determinación.

Existen algunas herramientas muy especializadas como De4DOT o DEObfuscar, que se especializan en deshacer la ofuscación con más o menos éxito según la complejidad del programa. Por ejemplo, aunque es muy efectivo con otros descompiladores, De4Dot no logra apenas nada con el código ofuscado con Obfuscar, el ofuscador que he utilizado en el vídeo. Sin embargo, DEObfuscar es mejor y puede aclarar bastante el código, aunque sigue siendo muy lioso, entre otras cosas porque no recupera nombres de funciones internas, variables, etc...

Por otro lado, no debes obsesionarte con ofuscar el código. Al final hay una verdad universal en programación que, cuando tienes experiencia acabas por descubrir: es mucho más complicado leer código que escribirlo. Y si no, prueba a leer y entender el código de cualquier aplicación Open Source que conozcas que no tenga muchos comentarios o, sin ir más lejos, código tuyo de hace un par de años si lo tienes. Lo más importante en una aplicación no trivial son las miles de pequeñas decisiones que se toman y por qué se toman, y no tanto la implementación concreta de las mismas. Por eso es muy importante mantener una buena documentación interna y externa.

De todos modos, si lo necesitas, espero que este vídeo te haya resultado interesante para aprender a proteger tu código fuente para .NET.

Te dejo el código fuente de las aplicaciones de ejemplo aquí:

Enlaces de interés:

 

José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Comentarios (6) -

Vi tu video y me sirvió a la perfección, pero no se como incluirlo en el paquete de instalación que creo con Visual Studio Installer, he intentado copiando los archivos uno a uno en la carpeta, pero aun asi cuando creo el instalador no me los ofusca, como puedo hacer? Gracias

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Nathaly:

Tienes que dejar fuera los archivos compilados "convencionales" e incluir, como cualquier otro archivo, los archivos ofuscados, que estarán en la ubicación donde los hayas generado.

Saludos

Responder

Hola, gracias por responder ingresé como archivo independiente el .exe ofuscado y sus dependencias para crear el instalador, pero al momento de instalar e ingresar los datos desde C# a Sql server y querer visualizarlos en un datagridview me salían las filas pero cada celda vacía, y al abrir el programa sin la ofuscacion estaban ahí los datos. ¿Cómo podría solucionar esto?

Responder

José Manuel Alarcón
José Manuel Alarcón

Mmmm, eso tiene pinta de ser algo relacionado con la configuración (cadena de conexión), no tanto con la ofuscación que no debiera afectarle para nada. ¿Estás seguro de que el .config lo está leyendo adecuadamente para ir a la base de datos correcta? Tiene pinta de que no se conecta ni para enviar ni para recibir datos y tienes un gestor de excepciones global o algo que impide que "rompa".

De todos modos eso no creo que sea de la ofuscación, y para solucionarlo tendrás que depurar y ver qué pasa exactamente.

Saludos.

Responder

Hola José Manuel, muchas gracias por tu vídeo, necesito ofuscar un archivo de silverlight en particular uno con extensión  ClientConfig en el que hay mucha información sensible, no encuentro por ahora ningún ofuscador ni siquiera de pago que lo haga, ¿sabes de alguno?

Muchas gracias.

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Mónica:

Lo siento, pero no trabajo con Silverlight. De hecho me sorprenda que aún haya quien trabaja con esta tecnología...

De todos modos, e independientemente de la tecnología que uses, ten en cuenta que el proceso se llama de ofuscación, no de encriptación o cifrado, por lo que nunca deberías incluir en un ensamblado ofuscado ninguna información problemática que nadie pueda conocer. Todo eso deberá estar siempre en el servidor y fuera del alcance de la gente, y/o además cifrada.

La ofuscación no te va ayudar con esto.

Saludos.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.