Teniendo un archivo .apk, ¿hay alguna manera de obtener su código fuente?
Apktool sólo genera Smali-Code, no código Java - esa es una gran diferencia.
Teniendo un archivo .apk, ¿hay alguna manera de obtener su código fuente?
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 .
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.
Un .apk es simplemente un archivo .zip. Pero desafortunadamente, cualquier aplicación construida para ser "liberada" probablemente será protegido por ProGuard .
De una de las wikis comunitarias de Parnkul Garg en SO :
Procedimiento para decodificar los archivos .apk, método paso a paso:
Haz una nueva carpeta y copia sobre el archivo .apk que quieras decodificar.
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.
Ahora extrae este archivo .zip en la misma carpeta (o NUEVA CARPETA).
Descargar dex2jar y extraerlo a la misma carpeta (o NUEVA CARPETA).
Mueve el archivo classes.dex a la carpeta dex2jar.
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.
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.
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.
Ahora abre otra nueva carpeta
Ponga el archivo .apk que quiere decodificar
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
Descargue marco-res.apk y ponerlo en la misma carpeta (No todos los archivos apk necesitan este archivo, pero no hace daño)
Abrir una ventana de comandos
Navegue al directorio root de APKtool y escriba el siguiente comando: apktool if framework-res.apk
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.
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 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.
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.
0 votos
aquí hay una hermosa joya para hacer esto