Decompilador de Dex a Java

jadx.png

Como la mayoría ya sabréis, .dex es el formato de fichero ejecutable que la máquina virtual Dalvik. Y cómo muchos ya también sabéis, aunque las aplicaciones Android las escribamos en Java (a menos que uses NDK, o algún framework de terceros que te permita codificar en algún otro lenguaje), pero no es el código Java o más bien el bytecode de Java lo que se ejecuta en el sistema, sino que hay un paso intermedio que convierte el bytecode de Java (.class) a bytecode de Dalvik (.dex) y esto es lo que se ejecuta.

Como también sabemos, el bytecode de Java o de prácticamente cualquier otro lenguaje que corra sobre una máquina virtual, es “fácilmente” reversible, es decir, a partir del bytecode, podemos generar el código fuente original con bastante precisión, a menos que éste haya sido ofuscado.

Hay muchas herramientas que nos permite recuperar el código fuente de un fichero .dex o de una aplicación completa de Android (.apk), de hecho normalmente tienes que usar varias herramientas para conseguir dicho objetivo.

Existe un proyecto llamado jadx que lo tiene todo. Es capaz de decompilar una aplicación .apk a código Java y además dispone de un editor visual que nos muestra y nos permite navegar a través de los distintos ficheros de la aplicación, incluso tiene opciones de de-ofuscación.

Jadx además está integrado en una web llamada www.javadecompilers.com de la que ya hablamos aquí en su día (por aquel entonces no tenía integrado Jadx).