¿Obtener el código fuente de un archivo .apk? [cerrado]

21

Al tener un archivo .apk, ¿hay alguna forma de obtener su código fuente?

eldarerathis
fuente
77
Antes de eso, ¿ha verificado si el paquete es de código abierto?
ott--
Un .apk es simplemente un archivo .zip. Pero desafortunadamente, cualquier compilación de aplicaciones para 'lanzamiento' probablemente estará protegida por ProGuard .
Daniel López
@MatthewRead The Op pregunta si podría obtener el código de una API, y yo respondí cómo se llama este fenómeno y formas de evitar al menos hacer una aplicación similar. No dice cómo evitar obtener el código. Entonces sí responde la pregunta.
Ser humano

Respuestas:

11

Si tiene suerte y su .apkarchivo no estaba protegido por Proguard o analógico, puede usar la herramienta APK . Es una herramienta para la ingeniería inversa de aplicaciones de Android binarias cerradas de terceros.

HitOdessit
fuente
Apktool solo genera código Smali, no código Java, eso es una gran diferencia.
Robert
2

De uno de los wiki de la comunidad de Parnkul Garg en SO :


Procedimiento para decodificar archivos .apk, método paso a paso:

Paso 1:

  1. Cree una nueva carpeta y copie sobre el archivo .apk que desea decodificar.

  2. Ahora cambie el nombre de la extensión de este archivo .apk a .zip (por ejemplo, cambie el nombre de filename.apk a filename.zip) y guárdelo. Ahora puede acceder a los archivos classes.dex, etc. En esta etapa puede ver los elementos dibujables pero no los archivos xml y java, así que continúe.

Paso 2:

  1. Ahora extraiga este archivo .zip en la misma carpeta (o NEW FOLDER).

  2. Descargue dex2jar y extráigalo a la misma carpeta (o NEW FOLDER).

  3. Mueva el archivo classes.dex a la carpeta dex2jar.

  4. Ahora abra el símbolo del sistema y cambie el directorio a esa carpeta (o NEW FOLDER). Luego escriba d2j-dex2jar classes.dexy presione enter. Ahora tiene el archivo classes.dex.dex2jar en la misma carpeta.

  5. Descargue el descompilador de Java , haga doble clic en jd-gui, haga clic en abrir archivo y abra el archivo classes.dex.dex2jar de esa carpeta: ahora obtendrá archivos de clase.

  6. Guarde todos estos archivos de clase (en jd-gui, haga clic en Archivo -> Guardar todas las fuentes) por nombre de src. En esta etapa, obtienes la fuente de Java, pero los archivos .xml aún no se pueden leer, así que continúa.

Paso 3:

Ahora abra otra carpeta nueva

  1. Ponga el archivo .apk que desea decodificar

  2. Descargue la última versión de apktool Y la ventana de instalación de apktool (ambas se pueden descargar desde el mismo enlace) y colóquelas en la misma carpeta

  3. Descargue framework-res.apk y póngalo en la misma carpeta (no todos los archivos apk necesitan este archivo, pero no duele)

  4. Abrir una ventana de comando

  5. Navegue al directorio raíz de APKtool y escriba el siguiente comando: apktool if framework-res.apk

  6. apktool d myApp.apk (donde myApp.apk denota el nombre de archivo que desea decodificar)

ahora obtienes una carpeta de archivos en esa carpeta y puedes leer fácilmente los archivos xml del apk.

Etapa 4:

No es un paso, solo copie el contenido de ambas carpetas (en este caso, ambas carpetas nuevas) a la única

y disfruta el código fuente ...

usuario3226511
fuente