El disco duro de mi computadora portátil se bloqueó 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 se almacena en mi correo electrónico desde que lo envié a un amigo.
¿Hay alguna forma de extraer mi código fuente de este archivo APK?
android
android-resources
decompiling
apk
Frank Bozzo
fuente
fuente
javac -decompile
, lo que luego se ajustaría a las pautas de SO. Me parece que las respuestas están fuera de tema , no la pregunta.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:
Cree una nueva carpeta y copie sobre el archivo .apk que desea decodificar.
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 puede acceder a los archivos classes.dex, etc. En esta etapa puede ver los elementos dibujables pero no los archivos xml y java, así que continúe.
Paso 2:
Ahora extraiga este archivo .zip en la misma carpeta (o NEW FOLDER).
Descargue dex2jar y extráigalo a la misma carpeta (o NEW FOLDER).
Mueva el archivo classes.dex a la carpeta dex2jar.
Ahora abra el símbolo del sistema y cambie el directorio a esa carpeta (o NEW FOLDER). Luego escriba
d2j-dex2jar classes.dex
(para Mac terminal o ubuntu write./d2j-dex2jar.sh classes.dex
) y presione Intro. Ahora tiene el archivo classes.dex.dex2jar en la misma carpeta.Descargue el descompilador de Java , haga doble clic en jd-gui, haga clic en abrir archivo y abra el archivo classes.dex.dex2jar de esa carpeta: ahora obtendrá archivos de clase.
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 la fuente de Java, pero los archivos .xml aún no se pueden leer, así que continúa.
Paso 3:
Ahora abra otra carpeta nueva
Ponga el archivo .apk que desea decodificar
Descargue la última versión de apktool Y la ventana de instalación de apktool (ambas se pueden descargar desde el mismo enlace) y colóquelas en la misma carpeta
Abrir una ventana de comando
Ahora ejecuta un comando como
apktool if framework-res.apk
(si no lo tienes, obténlo aquí ) y luegoapktool d myApp.apk
(donde myApp.apk denota el nombre de archivo que desea decodificar)ahora obtienes una carpeta de archivos en esa carpeta y puedes leer fácilmente los archivos xml del apk.
Paso 4:
No es ningún paso, solo copie el contenido de ambas carpetas (en este caso, las dos carpetas nuevas) a la única
y disfruta el código fuente ...
fuente
framework-res.apk
. Descárgalo desde aquíEsta es una descripción alternativa, en caso de que alguien se quede atascado con la descripción anterior. Sigue los pasos:
apktool.bat
(oapktool
para Linux) yapktool_<version>.jar
desde http://ibotpeaches.github.io/Apktool/install/apktool.jar
y coloque ambos archivos en la misma carpetacmd.exe
) y cámbielo a esa carpeta; verifique que esté instalado un entorno Java (para Linux, consulte también las notas sobre las bibliotecas necesarias)apktool decode [apk file]
Resultado intermedio : archivos de recursos,
AndroidManifest.xml
Resultado intermedio :
classes.dex
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=classes.dex
endex2jar.bat
(o ingrese<path_to>\dex2jar.bat classes.dex
en un cuadro de DOS; para uso de Linuxdex2jar.sh
)Resultado intermedio :
classes_dex2jar.jar
classes_dex2jar.jar
(puede ser opcional dependiendo del descompilador usado)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 solamente; finalmente, el código resultante probablemente se ofuscará
fuente
apktool
devueltossmali
? ¿Cómo obtener eljava
archivo?Si bien es posible que pueda descompilar su
APK
archivo, es probable que encuentre un gran problema:no va a devolver el código que escribiste. En su lugar, devolverá lo que sea que haya compilado el compilador, con variables con nombres aleatorios, así como funciones con nombres aleatorios. Podría llevar mucho más tiempo intentar descompilarlo y restaurarlo en el código que tenía, de lo que será volver a comenzar.
Lamentablemente, cosas como esta han matado muchos proyectos.
Para el futuro, recomiendo aprender un sistema de control de versiones, como CVS , SVN y git, etc.
y cómo respaldarlo.
fuente
También hay una nueva aplicación en Play Store con la que es posible descompilar un apk (también las aplicaciones del sistema) y ver el código fuente directamente en su teléfono inteligente. Guarda los archivos en su tarjeta SD para que también pueda verlos en su computadora. No requiere root u otra cosa.
Simplemente instale y diviértase. Creo que esta es la forma más fácil de descompilar una aplicación.
fuente
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 Project Locker para mis propios proyectos. Te da repositorios gratuitos de svn y git.
fuente
Estos dos artículos describen cómo combinar el uso
apktool
ydex2jar
tomar unAPK
archivo y crear un proyecto de Eclipse que pueda construirlo y ejecutarlo.Básicamente usted:
apktool
para obtener los archivos de recursos del apkdex2jar
para obtener un archivo jar que contenga las clases en un formato que le gustará a Eclipse.JDGui
para ver el código fuenteJDGui
, péguelo en una clase dentro de Eclipse y modifíquelofuente
apktool funcionará. Ni siquiera necesita conocer el almacén de claves para extraer el código fuente (lo que da un poco de miedo). El principal inconveniente es que la fuente se presenta en formato Smali en lugar de Java. Sin embargo, otros archivos, como el ícono y main.xml, funcionan perfectamente bien y puede valer la pena recuperarlos. En última instancia, lo más probable es que deba volver a escribir su código Java desde cero.
Puedes encontrar apktool aquí . Simplemente descargue apktool y el asistente apropiado (para Windows, Linux o Mac OS). Recomiendo usar una herramienta como 7-zip para descomprimirlos.
fuente
Hay algunas formas de hacer esto:
Utilice la función "Perfil o depuración de APK" en Android Studio 3.0.
Le permite abrir y explorar APK en Android Studio. Las clases se descomponen en smali. Los recursos no se extraen y cosas como "Ir a la definición", "Buscar todas las referencias" y la depuración no funcionan sin el código fuente (android studio 3.0 canary 9). Algunas funciones smali adicionales podrían funcionar con smalidea .
Usa jadx .
Jadx descompila el código en un APK dado a los archivos fuente de Java.
Usa apktool .
Apktool es una herramienta de línea de comandos que extrae recursos y descompila el código en pequeños para un apk dado. Puedes recompilar usando apktool también. Aquí hay un ejemplo de ello en acción:
fuente
Puede ser fácil ver la fuente:
En el estudio del androide 2.3,
Build -> Analyze APK -> Select the apk that you want to decompile
.Verás su código fuente.
Enlace para referencia:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
fuente
Te mostraré otra forma de descompilar los archivos .apk .
Puedes seguir los primeros 2 pasos desde " prankul garg ". Entonces tienes otras oportunidades:
Paso 3':
Descargue la "JD-GUI" , que es fácil de encontrar. 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 .
Entonces,
Primero: debe cambiar el nombre del archivo .apk a .zip
2º - Usted tiene que decodificar .dex archivo (si lo desea, decodificar el apk archivo a dex2jar , eso es posible)
3º - Tienes que decodificar el archivo .jar con JD-GUI
fuente
Debajo de la herramienta EN LÍNEA :
http://www.javadecompilers.com/apk
lo hace TODO con un clic: archivos .java descompilados + recursos + xml (en un archivo .zip) con muy buen descompilador (código java de retorno jadx en lugares / funciones donde otras compilaciones devuelven comentarios dentro de la función como "no se puede descompilar" o algunos ensamblador de Android / código de máquina)
fuente
Este sitio https://www.apkdecompilers.com/ hizo automáticamente.
Probé el sitio mencionado en la respuesta aceptada primero, pero eso no funcionó para mí.
fuente
Yo personalmente recomiendo la aplicación Show Java Android para obtener el código fuente. Puedes descargarlo desde Play Store o desde aquí
fuente
Apktool para aplicaciones de Android binarias cerradas de terceros de ingeniería inversa.
Puede decodificar recursos en forma casi original y reconstruirlos después de hacer algunas modificaciones.
Permite depurar el código pequeño paso a paso. También hace que trabajar con una aplicación sea más fácil 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/
fuente
apktool es el camino a seguir. El servicio apktool en línea también existe: http://www.javadecompilers.com/apktool
Obviamente, existen algunas limitaciones debido al servicio 'naturaleza en línea': puede extraer e investigar los activos y el archivo de manifiesto, pero es imposible volver a compilar la aplicación en este momento.
Aún así, esta es una forma sencilla de "abrir" la aplicación de Android.
fuente
Puedes probar DexPatcher . Incluso se integra con Android Studio. Utiliza Apktool y Dex2Jar internamente.
Puede usar esas herramientas de forma independiente también. Apktool descompila apk y extrae archivos .dex, que se pueden convertir a jar utilizando Dex2Jar. Jar se puede descompilar utilizando JD-GUI . Puede ver el código Java con la ayuda de esa herramienta. Aunque no se puede garantizar la similitud del código descompilado con el código real. Hay algunas herramientas avanzadas de ofuscación de código disponibles en el mercado, que desordenan el código para dificultar la compilación / comprensión. p.ej. Proguard
fuente
según su condición, si su apk de Android:
Condición1: NO endurecer (por Tencent Legu / Qihoo 360 / ...)
Opción1: uso del servicio en línea
como:
utilizando www.javadecompilers.com
ir:
para decodificar automáticamente desde apk al código fuente de Java
pasos:
upload
archivo apk + clicRun
+ esperar algún tiempo + clicDownload
para obtener zip + descomprimir ->sources/com/{yourCompanyName}/{yourProjectName}
es tu código fuente de Java esperado
Choice2: descompilar / crack por ti mismo
Utilice la herramienta relacionada para descompilar / crack por usted mismo:
usar
jadx
/jadx-gui
convertirapk
ajava sourcecode
descargue jadx-0.9.0.zip y luego descomprímalo en got
bin/jadx
, luego:jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
sources
yresources
sources/com/{yourCompanyName}/{yourProjectName}
es tu esperadojava sourcecode
jadx-0.9.0/bin/jadx-gui
(Linuxjadx-gui.sh
/ Windowsjadx-gui.bat
)apk
archivosave all
osave as Gradle project
p.ej:
Condición2: endurecer (por Tencent Legu / Qihoo 360 / ...)
El método principal de
3 steps
:apk/app to dex
dex to jar
jar to java src
explicación detallada:
Paso 1:
apk/app to dex
usar la herramienta (
FDex2
/ DumpDex) volcar / conectar eldex
archivo (uno o varios) desde la aplicación en ejecuciónpasos:
preparar ambiente
root
ed androidFDex2
/ DumpDex en XPosed y habilitarlodeshacerse
dex
de la aplicación en ejecuciónejecutar y
FDex2
luego haga clic en el nombre de su apk para habilitar más tarde para capturar / conectar dex/data/data/com/yourCompanyName/yourProjectName
dex
archivosPaso 2:
dex to jar
herramienta de uso (
dex2jar
) convertir (lo específico, que contiene la lógica de aplicación)dex
archivo ajar
archivodescargue dex2jar got dex-tools-2.1-SNAPSHOT.zip , descomprima got
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
, luegosh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
p.ej:
Paso 3:
jar to java src
usa una de las herramientas:
convertir
jar
ajava src
para el efecto de conversión de jar a java src:
Jadx
>Procyon
>CRF
>>JD-GUI
así que recomendamos usar:
Jadx
/jadx-gui
pasos:
jadx-gui
dex
archivoFile
->save all
p.ej:
exportado java src:
Una explicación más detallada puede ver mi tutorial en línea de chino ebook :
fuente
Android Studio te ofrece analizar cualquier archivo apk.
1: desde el menú de compilación, elija la opción analizar apk y seleccione el archivo apk. 2 - Esto dará como resultado el archivo classes.dex y otros archivos. 3 - Haga clic en classes.dex que le dará la lista de carpetas, paquetes, bibliotecas y archivos. 4 - Desde y la configuración de Android Studio instale un complemento llamado "Dex to Jar" 5 - haga clic en cualquier archivo de actividad de su proyecto extraído y elija dex to jar del menú de compilación.
Esto le dará el código real de su archivo java.
Salud.
fuente
La forma más simple es usar Apk OneClick Decompiler. Es un paquete de herramientas para descompilar y desmontar APK (paquetes de Android).
CARACTERISTICAS
REQUERIMIENTOS
Se debe instalar Java Runtime Environment (JRE).
Puede descargarlo desde este enlace Apk OneClick Decompiler
Disfrutalo.
fuente
Encontré lo siguiente como el método más simple:
fuente
Hay una aplicación para eso y generalmente solo requiere unos pocos clics y ya está. https://github.com/Nuvolect/DeepDive-Android
Después de eso, puede explorar el código fuente, descargarlo a otra computadora con elFinder o buscar a través de Lucene.
Además de Jadx, tiene descompiladores CFR y Fernflower.
fuente
He estado volviéndome loco durante días tratando de hacer que dex2jar funcione en una computadora portátil fedora 31 contra un apk que simplemente no iba a funcionar. Este script de Python 3 hizo el truco en minutos y la instalación de jd-gui hizo que los archivos de clase fueran legibles para los humanos.
http://java-decompiler.github.io/
https://github.com/Storyyeller/enjarify
específicamente, esto es lo que ejecuté:
Ahora uno debería poder buscar lo siguiente para obtener archivos de clase:
Y para comenzar jd-gui:
¡Entonces solo abre tus archivos de clase!
fuente
Desarrollé una herramienta - Code Analyzer, se ejecuta en iPhone / iPad / Mac, para analizar archivos Java / Android, https://decompile.io
fuente
Utilice esta herramienta http://www.javadecompilers.com/
Pero recientemente, una nueva ola de descompiladores ha incursionado en el mercado: Procyon, CFR, JD, Fernflower, Krakatau, Candle.
Aquí hay una lista de descompiladores presentados en este sitio:
CFR - Gratis, sin código fuente disponible, http://www.benf.org/other/cfr/ Autor: Lee Benfield
Descompilador muy bien actualizado! CFR es capaz de descompilar las características modernas de Java: módulos Java 9, Java 8 lambdas, interruptores de cadena Java 7, etc.
JD - gratis solo para uso no comercial, http://jd.benow.ca/ Autor: Emmanuel Dupuy
Actualizado en 2015. Tiene su propia interfaz visual y complementos para Eclipse e IntelliJ. Escrito en C ++, muy rápido. Soporta Java 5.
Procyon - código abierto, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Autor: Mike Strobel
Fernflower - código abierto, https://github.com/fesh0r/fernflower Autor: Egor Ushakov
Actualizado en 2015. Descompilador analítico muy prometedor de Java, ahora se convierte en una parte integral de IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Admite Java hasta la versión 6 (Anotaciones, genéricos, enumeraciones)
JAD : dado aquí solo por razones históricas. Gratis, sin código fuente disponible, espejo de descarga jad Autor: Pavel Kouznetsov
fuente