Descompilar un APK, modificarlo y luego recompilarlo


Necesito modificar un APK existente, modificar las fuentes y luego recompilarlo.

  • Puedo descompilarlo usando dex2jar o apktool, funciona muy bien
  • Desde el archivo jar puedo obtener las fuentes java (usando jd-gui)
  • Entonces puedo modificar los archivos java

Pero ahora me gustaría saber cómo recompilar los archivos java y ponerlos de nuevo en un archivo jar! (la parte jar debe ser fácil, el principal problema parece ser cómo recompilar los archivos java para android)

Sé que otra solución es usar apktool y luego modificar los archivos smali, pero parece ser realmente complicado cuando queremos agregar mucho código!

Mi aplicación es una ofuscación básica de HelloWorld whitout.

Author: darkheir, 2012-09-11

9 answers

Gracias a Chris Jester-Young me las arreglé para hacer que funcione!

Creo que la forma en que logré hacerlo funcionará solo en proyectos realmente simples:

  • Con Dex2jar obtuve el Frasco.
  • Con jd-gui convierto mi Jar de nuevo a archivos Java.
  • Con apktool tengo el manifiesto de Android y los archivos de recursos

  • En Eclipse creo un nuevo proyecto con la misma configuración que el anterior (comprobando toda la información en el manifiesto archivo)

  • Cuando se crea el proyecto estoy reemplazando todos los recursos y el manifiesto con los que obtuve con apktool
  • Pego los archivos java que extraje del Jar en el src foled (respetando los paquetes)
  • Modifico esos archivos con lo que necesito
  • Todo está compilando!

/!\ asegúrese de haber eliminado el apk antiguo del dispositivo se lanzará un error indicando que la firma apk no es la misma que la antigua!

 32
Author: darkheir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-11 13:35:27

Sé que esta pregunta todavía está contestada, me gustaría pasar una información.

Hay un descompilador en línea para android apks

  1. Subir apk desde la máquina local
  2. Espera algunos momentos
  3. Descargar el código fuente en formato zip

No se cuan confiable es esto.

@darkheir La respuesta es la forma manual de descompilar apk. Nos ayuda a entender las diferentes fases en la creación de Apk.

Otro en línea Apk de-compilador @Andrew Rukin : http://www.javadecompilers.com/apk

Todavía vale la pena. Me quito el sombrero ante los creadores.

 30
Author: edwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-16 14:55:38
  1. Primero descargue la herramienta dex2jar desde el Siguiente enlace http://code.google.com/p/dex2jar/downloads/list

  2. Extrae el archivo que crea dex2jar carpeta

  3. Ahora elige tu archivo apk y cambia su extensión .apk a .zip después de cambiar la extensión, parece ser un archivo zip, luego extraiga este archivo zip que encontró classes.dex archivo

  4. Ahora elige clases.archivo dex y ponerlo en la carpeta dex2jar

  5. Ahora abrir cmd ventana y escriba la ruta de la carpeta dex2jar

  6. Ahora escriba el comando dex2jar.bat classes.dex y presione Enter

  7. Ahora abre la carpeta dex2jar que encontraste classes_dex2jar.jar file

  8. A continuación, descargue la herramienta de descompilador de Java desde el siguiente enlace http://java.decompiler.free.fr/?q=jdgui

  9. Último paso Abra el archivo classes_dex2jar.jar en la herramienta de descompilador java ahora puede ver el código apk

 7
Author: vikram wadhwa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-20 12:54:50

Sé que esta pregunta ha sido respondida y no estoy tratando de dar una mejor respuesta aquí. Voy a compartir mi experiencia en este tema.

Una vez perdí mi código y solo tenía el archivo apk. Lo descompilé usando la herramienta de abajo y me alegró el día.

Estas herramientas DEBEN usarse en tal situación, de lo contrario, no es ético e incluso a veces es ilegal, (robar el esfuerzo de alguien más). Así que por favor úsalo sabiamente.

Esas son mis herramientas favoritas para hacer que:

Javadecompilers.com

Y para obtener el apk de google play se puede google o echa un vistazo a esos sitios:

En la fecha de publicación de esta respuesta probé todos los enlaces y funcionó perfecto para mí.

NOTA: La descompilación de Apk no es efectiva en caso de código proguarded. Porque Proguard encoge y ofusca el código y cambie el nombre de las clases a nombres sin sentido que hacen que sea bastante difícil entender el código.

Bono:

Tutorial básico de Usar Proguard :

 2
Author: MBH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-16 14:15:07

dex2jar con jd-gui dará todos los archivos fuente de java, pero no son exactamente los mismos. Son casi equivalentes .archivos de clase (no 100%). Así que si quieres cambiar el código de un archivo apk:

  • Descompilar usando apktool

  • apktool generará un archivo smali(versión ensamblada de dex) para cada archivo java con el mismo nombre.

  • Smali es humano comprensible, hacer cambios en el relevante file, recompile usando same apktool(apktool b Nw.apk <Folder Containing Modified Files>)

 0
Author: Pradeep Tiwari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-06 06:01:20

Esta es una manera:

  1. Usando apktool para decodificar:

    $ apktool d -f {apkfile} -o {output folder}
    
  2. A continuación, usando JADX (en github.com/skylot/jadx)

    $ jadx -d {output folder} {apkfile}
    

2 herramientas extraen y descompilan en la misma carpeta de salida.

Manera fácil: Usando Online APK Decompiler

 -1
Author: quyet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-15 01:20:18

Se debe cambiar la extensión del archivo de .apk a .zip. Luego extraiga los archivos, modifíquelos y luego comprímalos a .zip y recuerde cambiar el nombre de la extensión a .apk.

Para hacer esto ni siquiera tenemos que usar ningún ordenador. Prefiero ES explorador de archivos, que también puede ayudar a ver y editar el código fuente.

 -2
Author: Pavanpwm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-16 15:11:43

Sé que esta pregunta todavía se responde y no estoy tratando de ser inteligente aquí. Solo quiero compartir otro método sobre este tema.

Descargar aplicaciones con apk grial

APK Grail que proporciona el archivo zip gratuito de la aplicación.

 -2
Author: Thomas P. Wilt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-01 06:18:30

Use luckypatcher y eliminar la verificación de la licencia de lo que no tiene que firmar apk. Utilice WINRAR para reemplazar el código fuente modificado sin descompilar apk.

 -3
Author: meet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-16 16:05:39