¿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?

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. Descargue dex2jar y extráigalo 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). Luego escriba d2j-dex2jar classes.dex (para mac terminal o ubuntu write ./d2j-dex2jar.sh classes.dex ) y presione enter. Ahora tiene el archivo classes.dex.dex2jar en la misma carpeta.

  5. Descarga el decomstackdor de Java , haz doble clic en jd-gui, haz clic en abrir archivo y abre el archivo classes.dex.dex2jar desde esa carpeta: ahora obtienes los archivos de clase.

  6. Guarde todos estos archivos de clase (en jd-gui, haga clic en Archivo -> Guardar todas las fonts) 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 AND apktool install window (ambos pueden descargarse desde el mismo enlace) y colóquelos en la misma carpeta

  3. Abra una ventana de comando

  4. Ahora ejecute el comando como apktool if framework-res.apk y next

  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 …

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

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

  3. abra una caja dos ( cmd.exe ) y cambie a esa carpeta; verifique que esté instalado un entorno Java (para Linux, compruebe también las notas sobre las bibliotecas necesarias)
  4. Inicio: 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. descargue y extraiga 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. arrastre y suelte classes.dex en dex2jar.bat (o ingrese \dex2jar.bat classes.dex en un cuadro de DOS; para Linux use dex2jar.sh )

    Resultado intermedio : classes_dex2jar.jar

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

    Resultado : código fuente

Nota: no está permitido descomstackr 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

Si bien es posible que puedas descomstackr tu archivo APK , es probable que encuentres un gran problema:

no va a devolver el código que escribió. En su lugar, devolverá cualquier comstackdor en línea, con las variables dadas nombres aleatorios, así como funciones dadas nombres aleatorios. Podría tomar mucho más tiempo tratar de descomstackrlo 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.

También hay una nueva aplicación en Play Store con la que es posible descomstackr 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 descomstackr una aplicación.

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 repository de código incluso si eres el único codificador. He estado usando Project Locker para mis propios proyectos. Te da libre repositorys svn y git.

Estos dos artículos describen cómo combinar el uso de apktool y dex2jar para tomar un archivo APK y crear un proyecto Eclipse que pueda comstackrlo 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. Utilice apktool para obtener los archivos de recursos de la apk
  2. Use dex2jar para obtener un archivo jar que contenga 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 , JDGui en una clase dentro de Eclipse y JDGui
  7. Elimine esa clase del archivo jar (para que no tenga la misma clase definida varias veces)
  8. Ejecutarlo.

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.

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 descomstackn 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 adicionales de smali podrían funcionar con smalidea .

    android-studio

    seleccione Archivo

    código

  2. Usa jadx .

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

    jdax-img

  3. Usa apktool

    Apktool es una herramienta de línea de comandos que extrae recursos y descomstack el código en smali para una aplicación determinada. Usted puede recomstackr 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... 

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

Te mostraré otra forma de descomstackr los archivos .apk .

Puedes seguir los primeros 2 pasos de ” prankul garg “. Entonces tienes otras oportunidades:

Paso 3′:

Descarga la “JD-GUI” , es fácil encontrar esta. Abra su archivo .jar en “jd-gui.exe”. (Archivo> Abrir archivo> ‘encontró su archivo .jar ‘). Después de este procedimiento, puede guardar todos los recursos en un archivo .zip .

Asi que,

Primero – Debe cambiar el nombre del archivo .apk a .zip

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

3º – Debe decodificar el archivo .jar con JD-GUI

Debajo de la herramienta ONLINE :

http://www.javadecompilers.com/apk

hace TODO con un clic: archivos .java decomstackdos + recursos + xml (en un archivo .zip) con muy buen descomstackdor (jadx devuelve código java en lugares / funciones donde otras comstackciones devuelven comentarios dentro funcionan como “no se puede descomstackr” o algunos ensamblador android / código máquina)

Apktool para ingeniería inversa aplicaciones de Android binarias, cerradas y de terceros.

Puede decodificar recursos en forma casi original y reconstruirlos después de hacer algunas modificaciones.

Hace posible depurar código smali paso a paso. También facilita el trabajo con una aplicación debido a la estructura de archivos similar a un proyecto y la automatización de algunas tareas repetitivas como la creación de apk, etc.

http://ibotpeaches.github.io/Apktool/

Personalmente recomiendo la aplicación Show Java de Android para obtener el código fuente. Puedes descargarlo desde Play Store o desde aquí

apktool es EL camino a seguir. El servicio apktool en línea también existe: http://www.javadecompilers.com/apktool

Algunas limitaciones, obviamente, existen debido a la naturaleza en línea del servicio: puede extraer e investigar los activos y el archivo de manifiesto, pero es imposible volver a comstackr la aplicación en este momento.

Aún así, esta es una forma sencilla de “abrir” la aplicación de Android.

Este sitio https://www.apkdecompilers.com/ lo hizo automáticamente.

Probé el sitio mencionado en la respuesta aceptada primero, pero eso no funcionó para mí.

Puedes probar DexPatcher . Incluso se integra con Android Studio. Utiliza Apktool y Dex2Jar internamente.
También puede usar esas herramientas de manera independiente. Apktool descomstack apk y extrae archivos .dex, que pueden convertirse en jar utilizando Dex2Jar. Jar se puede descomstackr usando JD-GUI . Puedes ver el código de Java con la ayuda de esa herramienta. Aunque no se puede garantizar la similitud del código decomstackdo con el código real. Existen algunas herramientas avanzadas de ofuscación de códigos disponibles en el mercado, que desordenan el código y dificultan su descomstackción / comprensión. p.ej. Proguard