domingo, 18 de septiembre de 2011

Decompilación de código interpretado


Hace tiempo que quería escribir una entrada al blog que tratase de la decompilación de ejecutables, cuyo código es interpretado, como los que generan lenguajes conocidos como .NET o Java.

En este caso lo haremos con .NET y sin duda alguna, el mejor decompilador .NET es .NET Reflector de la compañía Red Gate. 

Sin embargo, no hace mucho tiempo que dejó de ser gratuito. Por lo tanto me puse a buscar alternativas y me encontré con ILSpy. Una alternativa que aunque joven, promete y mucho, además de ser open-source.

ILSpy servirá perfectamente para ver un ejemplo de decompilación .NET, donde descubriremos las vulnerabilidades de este tipo de lenguajes, para así, en sucesivas entradas, ver que técnicas tenemos disponibles para proteger un poco más este tipo de aplicaciones. 

Usaremos como ejemplo el típico winform de acceso a una aplicación, con un código de desbloqueo que es fijo dentro del ejecutable (HardCode). 
En donde al pulsar el botón Unlock nos mostrará en otra ventana, si el código es correcto o no:




Cargamos ILSpy, abrimos el ejecutable en cuestión y navegamos un poco por la estructura jerárquica del ensamblado y enseguida vemos que en Form1 hay un método cuyo nombre no puede ser más obvio "buttonUnlock_Click". Situándonos en esa referencia observaremos como en el marco derecho de la aplicación, se muestra el contenido del método desensamblado, poniendo de manifiesto la debilidad de estos lenguajes:




ILSpy acaba de nacer, pero tiene un gran futuro por delante, por todo ello, personalmente os animo a usarlo y apoyarlo todo lo que podaís.

En próximas entradas, hablaremos de la técnica de ofuscación de código como medida de seguridad ante este tipo de aplicaciones de decompilación.

3 comentarios:

  1. No necesitaba descompilar para sacar esa contraseña :)

    ResponderEliminar
  2. Ya me lo temía yo jejejeje ;). Pero... ¿has tardado demasiado, no?. Un abrazo calamardo.

    ResponderEliminar
  3. Estamos hablando de mujeres? Yo me apunto...

    ResponderEliminar