Tutorial: Decompilar código Android

tutorial android

Hoy vamos a explicar algo súmamente útil para aprender. A veces para aprender a programar debemos ver código de otros para ver cómo lo hacen. Lo expuesto aquí no es para robar código a otros y usarlo ya que eso sería amoral, es sólo para ver las tripas de un código Java-Android y con propósitos educativos mejorar nuestro código. Esto se llama ingeniería inversa.

Breve descripción de la máquina virtual Java de Android (Dalvik)

Los APK de Android en el fondo son archivos comprimidos que podemos descomprimir con el WinRar (o similares). Uno de los archivos que aparece si descomprimimos un archivo APK es el que tiene como extensión .dex. Los archivos .dex son archivos con código ejecutable directamente por la máquina virtual Dalvik que llevan los móviles Android. 

Cuando programamos algo en Android y compilamos, por debajo lo que se hace es generar los archivos .class (los compilados de java) para luego generar los archivos .dex que están optimizados para la máquina Dalvik. Estos archivos harán que el código sea más eficiente que los .class Para la conversión a .dex se usa internamente la utilidad "dx"

Decompilando aplicaciones Android

Nosotros necesitamos hacer la operación inversa a lo explicado antes, es decir, a partir de un fichero .dex obtener un .java donde veremos código humanamente legible. He de decir que hay gente privilegiada que es capaz de leer los .dex y aprender, pero como nosotros no somos personas superdotadas necesitaremos pasarlos a código Java para poder aprender algo.

Para decompilar las aplicaciones Android primero deberemos pasar los .dex a .jar y luego de .jar a .java. 

Transformar archivo .dex en .jar

Para transformar un .dex a .jar necesitamos la herramienta: dex2jar que podemos descargar desde la página de descarga de dex2jar, lo descomprimimos en una carpeta y desde modo consola ejecutamos (siendo ARCHIVO.dex la ruta de nuestro archivo .dex):

dex2jar ARCHIVO.dex

Con esto nos habrá creado un archivo .jar en el directorio. Este archivo .jar es la mitad de nuestro proceso. Ahora necesitamos transformar el .jar en clases de java

Transformar archivo .jar en clases de java

Necesitamos descargar un decompilador java, podéis encontrarlo en esta web: Decompilador java, la mejor opción es descargar el jd-gui (la que es modo ventanas) de nuestro sistema operativo.

Instalamos el decompilador de java y lo ejecutamos. Pinchamos en File->Open file y abrimos el archivo .jar que creamos antes. La herramienta nos decompilará el código java y tendremos el código fuente

Conclusión de decompilar aplicación Android

Como habéis visto, decompilar una aplicación Android es muy sencillo. En otro el artículo ofuscar código java en android explicaré cómo evitar (parcialmente) que nos decompilen nuestro código ofuscando el código.

Sed buenos y usad este tutorial simplemente para aprender.

 

Votos totales: 587