Menú principal

lunes, 6 de febrero de 2012

JAD: Un decompilador de Java para Mac OS X

Recientemente ha habido que mirar la seguridad de un Applet Java, y ha hecho falta buscar un decompilador que nos permitiera analizar el código fuente original para ver si había algún elemento destacable relativo a la seguridad. Así que ha habido que probar varios, para al final terminar trabajando con Jad, una utilidad muy cómoda que ya forma parte de los comandos del sistema en nuestros equipos.

Jad es un proyecto que programó Pavel Kouznetsov, pero que desde el 2001 está abandonado, y hay que buscarlo en mirrors o webs de gente que lo mantiene. En este caso, en un mirror mantenido por Tomas Varaneckas, además de versiones para Linux, Solaris o Windows entre otros, es posible acceder a las siguientes versiones para Mac OS X.
Jad 1.5.8g para Mac OS X 10.4.6 (Intel) (170707 bytes) (Con GCC 4.0)
Jad 1.5.8c para Mac OS X (Darwin 1.3) (PowerPC) (266264 bytes)
Jad 1.5.7b para Mac OS X (Rhapsody 5.3) (PowerPC)  (372317 bytes)
La versión Jad 1.5.8g funciona perfectamente en sistemas Mac OS X Lion 10.7.X, así que es probable que en las versiones anteriores también lo haga.

Figura 1: Código decompilado generado por Jad

Jad es extremadamente sencillo de utilizar y a la vez flexible en los resultados que se quieren generar. Al final, lo que hace es interpretar los bytecodes de los ficheros .class en lenguaje Java de alto nivel, para lo que genera un fichero de salida, por defecto con extensión .jad. La forma en la que se quiere generar ese fichero se puede hacer por modificadores, pudiendo elegir desde el tamaño de las constantes alfanuméricas, el formato de la identación o hasta si se quieren las instrucciones de la JVM en forma de comentarios para un análisis de ingeniería inversa más profunda.

Un ejemplo rápido con Applet

Sólo como un ejemplo rápido de cómo usar el programa, basta con descargarse un Applet Java, en este caso en formato .jar (Java Archiver) y extraer los ficheros .class de él. Para ello es suficiente con utilizar cualquier descompresor que interprete ficheros pk. Una vez extraídos los ficheros .class, se puede utilizar Jad para generar un fichero .jad con el código fuente asociado a cada fichero .class.

Figura 2: Decompilando todos los archivos de un Applet con Jad

Después, el trabajo es para el analista que deberá ir buscando el hilo por el que empezar a analizar el código fuente del programa. Una opción sencilla es buscar cadenas con grep en todos los ficheros .jad, para saber dónde se encuentra "la chicha".

Figura 3: Buscando cadenas en los ficheros decompilados para encontrar la pista

Al final, Jad es una buena utilidad de bolsillo que llevar encima por si nos encontramos un entorno en el que nos haga falta.

No hay comentarios:

Publicar un comentario en la entrada

Artículos relacionados

Otras historias relacionadas

Entradas populares