21 votos

¿Conseguir el código fuente de un archivo .apk?

Teniendo un archivo .apk, ¿hay alguna manera de obtener su código fuente?

7 votos

Antes de eso, ¿has comprobado si el paquete es de código abierto?

0 votos

Un .apk es simplemente un archivo .zip. Pero desafortunadamente cualquier aplicación construida para 'release' probablemente será protegido por ProGuard .

0 votos

@MatthewRead El Op pregunta si podría obtener el código de una api, y yo le contesté cómo se llama este fenómeno y las formas de al menos prevenir de hacer una app similar. No dice cómo prevenir para conseguir el código Así que sí responde a la pregunta.

15voto

Nikolai Samteladze Puntos 230

Incluso si se usó ProGuard, todavía puedes obtener algunas ideas interesantes. Aquí hay una pregunta de StackOverflow con una explicación detallada: Android: Obtener el código fuente de un archivo APK . Un video de YouTube con un guía detallada . Y una entrada en el blog sobre eso: Cómo recuperar el código fuente de un archivo APK de Android .

11voto

HitOdessit Puntos 285

Si tienes suerte y tu .apk El archivo no estaba protegido por Progreso o analógico, puedes usar Herramienta APK . Es una herramienta de ingeniería inversa para aplicaciones Android binarias cerradas de terceros.

0 votos

Apktool sólo genera Smali-Code, no código Java - esa es una gran diferencia.

8voto

Daniel López Puntos 234

Un .apk es simplemente un archivo .zip. Pero desafortunadamente, cualquier aplicación construida para ser "liberada" probablemente será protegido por ProGuard .

2voto

user3226511 Puntos 1

De una de las wikis comunitarias de Parnkul Garg en SO :


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

Paso 1:

  1. Haz una nueva carpeta y copia sobre el archivo .apk que quieras decodificar.

  2. Ahora renombra la extensión de este archivo .apk a .zip (por ejemplo, cambia el nombre del archivo.apk a nombre del archivo.zip) y guárdalo. Ahora puedes acceder a los archivos classes.dex, etc. En esta etapa puedes ver los dibujables pero no los archivos xml y java, así que continúa.

Paso 2:

  1. Ahora extrae este archivo .zip en la misma carpeta (o NUEVA CARPETA).

  2. Descargar dex2jar y extraerlo a la misma carpeta (o NUEVA CARPETA).

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

  4. Ahora abra el símbolo del sistema y cambie el directorio a esa carpeta (o NUEVA CARPETA). Luego escriba d2j-dex2jar classes.dex y presiona enter. Ahora tienes el archivo classes.dex.dex2jar en la misma carpeta.

  5. Descargar descompilador de Java , doble click en jd-gui, click en abrir archivo, y abre el archivo classes.dex.dex2jar de esa carpeta: ahora obtienes los archivos de las clases.

  6. Guarda todos estos archivos de clase (En jd-gui, haz clic en File -> Save All Sources) por el nombre src. En esta etapa obtienes la fuente java pero los archivos .xml siguen siendo ilegibles, así que continúa.

Paso 3:

Ahora abre otra nueva carpeta

  1. Ponga el archivo .apk que quiere decodificar

  2. Descargue la última versión de apktool Y ventana de instalación de apktool (ambos pueden ser descargados del mismo enlace) y colocarlos en la misma carpeta

  3. Descargue marco-res.apk y ponerlo en la misma carpeta (No todos los archivos apk necesitan este archivo, pero no hace daño)

  4. Abrir una ventana de comandos

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

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

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

Paso 4:

No es cualquier paso, sólo copiar el contenido de ambas carpetas (en este caso, ambas carpetas nuevas) en una sola.

y disfrutar del código fuente...

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X