descompilar DEX en código fuente Java

¿Cómo se pueden descompilar los archivos DEX de Android (VM bytecode) en el correspondiente código fuente de Java?

Solución

It's easy

Consigue estas herramientas:

  1. dex2jar para traducir archivos dex a archivos jar

  2. jd-gui para ver los archivos java en el jar

El código fuente es bastante legible ya que dex2jar realiza algunas optimizaciones.

Procedimiento:

Y aquí'está el procedimiento de cómo descompilar:

Paso 1:

Convertir classes.dex en test_apk-debug.apk a test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex

Nota:** En las máquinas Windows todos los scripts .sh son reemplazados por scripts `.bat

documentación dex2jar

Paso 2:

Abre el jar en JD-GUI

El código fuente descompilado]4

Comentarios (11)

Yo recomendaría ir aquí: https://github.com/JesusFreke/smali

Proporciona BAKSMALI, que es una excelente herramienta de ingeniería inversa para archivos DEX. Está hecha por JesusFreke, el tipo que creó las famosas ROMs para Android.

Comentarios (4)

Con Dedexer, puedes desensamblar el archivo .dex en bytecode dalvik (.ddx).

Descompilar hacia Java no es posible, que yo sepa.
Puedes leer sobre el bytecode dalvik aquí.

Comentarios (2)