Pregunta ¿Hay alguna manera de obtener el código fuente de un archivo APK?


El disco duro de mi computadora portátil simplemente se colgó y perdí todo el código fuente de una aplicación en la que he estado trabajando durante los últimos dos meses. Todo lo que tengo es el archivo APK que está almacenado en mi correo electrónico desde cuando lo envié a un amigo.

¿Hay alguna forma de extraer mi código fuente de este archivo APK?


1050
2017-08-29 03:40


origen


Respuestas:


Manera simple: use la herramienta en línea http://www.javadecompilers.com/apk, cargue apk y obtenga el código fuente.


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

Paso 1:

  1. Cree una nueva carpeta y copie 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 puedes acceder a los archivos de classes.dex, etc. En esta etapa, puedes ver los archivos 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. 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 NUEVA CARPETA). A continuación, escribir d2j-dex2jar classes.dex (para mac terminal o ubuntu escribir ./d2j-dex2jar.sh classes.dex) y presione enter. Ahora tiene el archivo classes.dex.dex2jar en la misma carpeta.

  5. Descargar Java decompiler, haz doble clic en jd-gui, haz clic en abrir archivo y abre el archivo classes.dex.dex2jar desde esa carpeta: ahora obtienes 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 el origen de Java pero los archivos .xml aún no se pueden leer, así que continúa.

Paso 3:

Ahora abra otra carpeta nueva

  1. Coloque el archivo .apk que desea decodificar

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

  3. Abra una ventana de comando

  4. Ahora ejecuta comando como apktool if framework-res.apk y después

  5. apktool d myApp.apk  (donde myApp.apk indica el nombre de archivo que desea decodificar)

ahora obtienes una carpeta de archivos en esa carpeta y puedes leer fácilmente los archivos xml de la aplicación.

Etapa 4:

No es ningún paso solo copiar los contenidos de ambas carpetas (en este caso ambas carpetas nuevas) al único

y disfruta del código fuente ...


1389
2018-03-13 20:09



Esta es una descripción alternativa, en caso de que alguien se quede atascado con la descripción anterior. Sigue los pasos:

  1. descargar apktool.bat (o apktool para Linux) y apktool_<version>.jar de http://ibotpeaches.github.io/Apktool/install/ 
  2. cambie el nombre del archivo jar de arriba a apktool.jar y poner ambos archivos en la misma carpeta

  3. abra una caja dos (cmd.exe) y cambiar a esa carpeta; verifique que esté instalado un entorno Java (para Linux, compruebe también las notas sobre las bibliotecas necesarias)
  4. Comienzo: apktool decode [apk file] 

    Resultado intermedio: archivos de recursos, AndroidManifest.xml

  5. descomprima el archivo APK con un desempaquetador de su elección

    Resultado intermedio: classes.dex

  6. descargar y extraer dex2jar-0.0.9.15.zip de http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. arrastrar y soltar classes.dex sobre dex2jar.bat (o ingrese <path_to>\dex2jar.bat classes.dex en un cuadro de DOS; para el uso de Linux dex2jar.sh)

    Resultado intermedio: classes_dex2jar.jar

  8. deshacer classes_dex2jar.jar (podría ser opcional según el descompilador utilizado)
  9. descompila tus archivos de clase (por ejemplo, con JD-GUI o DJ Decompiler)

    Resultado: código fuente

Nota: no está permitido descompilar paquetes de terceros; esta guía está destinada a recuperar el código fuente personal de un archivo APK únicamente; finalmente, el código resultante probablemente estará ofuscado


107
2017-08-29 03:58



Si bien es posible que pueda descompilar su APK archivo, es probable que golpee un gran problema:

no va a devolver el código que escribió. En su lugar, devolverá cualquier compilador en línea, con las variables dadas nombres aleatorios, así como funciones dadas nombres aleatorios. Podría tomar mucho más tiempo tratar de descompilarlo y restaurarlo en el código que tenía, que volver a empezar.

Tristemente, cosas como esta han matado a muchos proyectos.
Para el futuro, recomiendo aprender un sistema de control de versiones, como CVS, SVN y git etc.

y cómo respaldarlo.


96
2018-01-11 12:49



También hay una nueva aplicación en Tienda de juegos con el que es posible descompilar un apk (aplicaciones del sistema también) y ver el código fuente directamente en su teléfono inteligente. Guarda los archivos en su tarjeta SD para que pueda verlos también en su computadora. No requiere root o algo más.

Simplemente instala y diviértete. Creo que esta es la forma más fácil de descompilar una aplicación.


47
2017-08-29 12:17



apktool es lo mejor que puedes probar He guardado algunos xml con él, pero sinceramente no sé cómo funcionará con el código .java.

Te recomendaría tener un repositorio de código incluso si eres el único codificador. He estado usando Proyecto Locker para mis propios proyectos Te da libre repositorios svn y git.


24
2017-12-06 01:38



Estos dos artículos describen cómo combinar el uso de apktool y dex2jar tomar una APK archive y cree un proyecto de Eclipse que pueda construirlo y ejecutarlo.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

Básicamente tú:

  1. Utilizar apktool para obtener los archivos de recursos fuera de la apk
  2. Utilizar dex2jar para obtener un archivo jar que contiene las clases en un formato que le gustará a Eclipse.
  3. Cree un proyecto de Eclipse apúntelo a los archivos de recursos y al nuevo archivo jar
  4. Abra el archivo jar con una utilidad de compresión y elimine los recursos existentes
  5. Abra el archivo jar con JDGui para ver el código fuente
  6. Tome el código fuente que necesite de JDGui, pégalo en una clase dentro de Eclipse y modifícalo
  7. Elimine esa clase del archivo jar (para que no tenga la misma clase definida varias veces)
  8. Ejecutarlo.

20
2017-08-29 04:02



apktool funcionará. Ni siquiera necesita saber el almacén de claves para extraer el código fuente (lo que da un poco de miedo). La desventaja principal es que la fuente se presenta en formato Smali en lugar de Java. Sin embargo, otros archivos como el icono y main.xml están perfectamente bien y puede valer la pena recuperarlos. En última instancia, lo más probable es que necesite volver a escribir su código Java desde cero.

Puedes encontrar apktool aquí. Simplemente descargue apktool y el asistente correspondiente (para Windows, Linux o Mac OS). Recomiendo usar una herramienta como 7-zip para descomprimirlos.


16
2017-08-11 03:27



Hay algunas maneras de hacer esto:

  1. Utilice la función "Perfil o depuración APK" en Android Studio 3.0.

    Le permite abrir y explorar APK en Android Studio. Las clases se descompilan en smali. Los recursos no se extraen y cosas como "Ir a Definición", "Buscar todas las referencias" y la depuración no funcionan sin el código fuente (android studio 3.0 canary 9). Algunas características smali adicionales podrían funcionar con smalidea.

    android-studio

    select-file

    code

  2. Utilizar jadx.

    Jadx descompila el código en un archivo APK dado a java.

    jdax-img

  3. Utilizar apktool.

    Apktool es una herramienta de línea de comandos que extrae recursos y descompila el código en smali para una aplicación determinada. Usted puede recompilar usando apktool también. Aquí hay un ejemplo de esto en acción:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
    

6
2018-05-25 14:06



Puede ser el más fácil de ver la fuente:

En Android studio 2.3, Build -> Analyze APK -> Select the apk that you want to decompile.
Verás que es el código fuente.

Linf para referencia:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2


6
2018-02-25 12:22



Te mostraré otra forma de descompilar el .apk archivos.

Puedes seguir los primeros 2 pasos desde "prankul garg". Entonces tienes otras oportunidades:

Paso 3':

Descargar el "JD-GUI", es fácil encontrar este. Abre tu .tarro archivo en "jd-gui.exe". (Archivo> Abrir archivo> 'encontró su .tarro archivo'). Después de este procedimiento, puede guardar todos los recursos en un .cremallera archivo.

Asi que,

1º - Debe cambiar el nombre del .apk archivo a .cremallera

2º - Debe decodificar .dex archivo (si lo desea, decodifique el .apk archivo a dex2jar, eso es posible)

3º - Tienes que decodificar .tarro archivo con JD-GUI


5
2018-06-10 14:36



Abajo EN LÍNEA herramienta:

http://www.javadecompilers.com/apk 

hace TODO con un clic: descompilado .java archivos + recursos + xml (en un archivo .zip) con descompilador muy bueno (jadx devuelve código java en lugares / funciones donde otras compilaciones devuelven comentarios dentro funcionan como "no se puede descompilar" o algún ensamblador android / código máquina)


4
2018-05-15 08:21