Cómo decompilar un archivo APK ó DEX usando jadx en Windows

Los paquetes de aplicación de Android (APK) es el formato usado para distribuir e instalar aplicaciónes en el Sistema operativo para móviles Android de Google. Hay muchas razones por las cuales querrías decompilar un APK, por ejemplo para aprender como funciona una aplicación, para incrementar la seguridad y complejidad de tu código, para robar el código fuente de aplicaciones de tercero ... es decir, para analizarlo ... y otras.

Para decompilar un APK, en este artículo usaremos jadx, la herramienta de lineas de comando e interfáz gráfica (GUI) para obtener el código fuente de archivos DEX y APK.

Requisitos

  • Necesitarás obviamente Java instalado en tu computadora.

Nota importante

En ningun caso nosotros (Our Code World) o el desarrollador de la aplicación será relacionado indirectamente, directamente o de manera especial u otro tipo de consecuencia resultante por el uso indebido de esta aplicación o de las APKs decompiladas con este. Usalo bajo tu propio riesgo.

1. Descarga los archivos binarios de jadx

Para comenzar con la decompilación de un APK con jadx, necesitarás las distribuciones binarias de la aplicación jadx que puedes descargar a través de diferentes fuentes como por ejemplo Github o SourceForge:

Github releases

Esta aplicacíón es pública y licenciada bajo la licencia de Apache 2.0. El código fuente está disponible en Github y los binarios se pueden descargar en el area de distribuciones "releases" aquí. Descarga siempre la ultima versión:

Github Releases Jadx Github

En SourceForge

Puedes descargar un archivo zip con los binarios de jadx desde SourceForge aquí. Descarga siempre la última versión.

Download jadx sourceforge

La descarga de cualquiera de las fuentes, debería ser un archivo zip que contiene los archivos binarios.

2. Extrae el contenido del zip

Ahora extrae el contenido del archivo descargado dentro de una carpeta de tu preferencia, el contenido del zip debería lucir a algo como lo siguiente:

jadx binaries content

De nuestro interes es la carpeta bin que contiene los archivos bat que nos permiten usar jadx en la linea de comando o con una interfáz gráfica (GUI):

JADX executables windows

Importante

Ejecuta los archivos bat con derechos de administrador, de otra manera puede que jadx nisiquiera inicie.

3. Usando jadx para decompilar un APK

Como mencionamos anteriormente puedes usar jadx desde la linea de comandos o usando una interfáz gráfica:

Con GUI

jadx es generalmente usado con una interfáz gráfica que facilita su uso, para ello ejecuta el archivo jadx-gui.bat (dentro de la carpeta jadx-folder/bin) con derechos de administrador. Lo primero que verás será una ventana que te permite escoger el APK que quieres decompilar:

Jadx open apk file

Una vez que has seleccionado el archivo, jadx comenzará la decompilación y con ellos además te mostrará un menu con estilo IDE en el lado izquierdo de la aplicación que listará todos los paquetes de Java y archivos del APK. En este ejemplo vamos a usar la APK de Our Code Editor Premium, cuyo código está basado en Cordova pues es una aplicación híbrida y la app en si misma está en la carpeta de recursos pues está escrita en Javascript (Resources/assets/www):

APK decompiled with JADX

Genial, no crees ? Ahora puedes guardar todo el código dentro de una carpeta si clickeas en el menú superior, luego en File y finalmente en Save all.

Con la linea de comandos

Puedes usar jadx como una utilidad de linea de comandos. Abre una nueva ventana de CMD con derechos de administrador y cambia de directorio a la carpeta en la que se localiza jadx usando el comando cd :

cd C:\Users\sdkca\Desktop\jadx\bin

Located in the bin directory where the jadx file is, you can execute the commands, for example to extract the code from an APK, you can use the following command:

REM the command has the following structure
REM jadx -d [path-output-folder] [path-apk-or-dex-file]
jadx -d C:\Users\sdkca\Desktop\source-code C:\Users\sdkca\Desktop\test-apks\ourcodeeditor-premium.apk

La ejecución del comando anterior debería extraer todo el código fuente en la carpeta source-code en el escritorio (note que la carpeta ya debe existir).

Feliz decompilación !

Esto podría ser de tu interes

Conviertete en un programador más sociable