java android reverse-engineering decompiler dex
http://www.viralpatel.net/blogs/download/jad/jad.zip

descompilar DEX en el código fuente de Java



apk decompiler windows (16)

Es fácil

Consigue estas herramientas:

1) dex2jar para traducir archivos dex a archivos jar

2) jd-gui para ver los archivos java en el jar

El código fuente es bastante legible ya que dex2jar hace algunas optimizaciones.

Procedimiento:

Y aquí está el procedimiento sobre cómo descompilar:

Paso 1:

Convierte classes.dex en test_apk-debug.apk a test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk

Nota: en las máquinas Windows, todos los scripts .sh son reemplazados por scripts .bat

documentación dex2jar

Paso 2:

Abre el tarro en JD-GUI

¿Cómo se pueden descompilar los archivos DEX de Android (bytecode VM) en el código fuente de Java correspondiente?


A veces se obtiene un código roto cuando se usa dex2jar / apktool , especialmente en los bucles. Para evitar esto, use jadx , que descompila el bytecode dalvik en el código fuente java, sin crear primero un archivo .jar / .class como dex2jar hace dex2jar (apktool usa dex2jar, creo). También es de código abierto y en desarrollo activo. Incluso tiene una GUI, para GUI-fanáticos. ¡Intentalo!



Con Dedexer , puede desensamblar el archivo .dex en el bytecode de .ddx ( .ddx ).

Descompilar hacia Java no es posible por lo que sé.
Puedes leer sobre el bytecode dalvik here .


De hecho, recomiendo ir aquí: https://github.com/JesusFreke/smali

Proporciona BAKSMALI, que es la herramienta de ingeniería inversa más excelente para archivos DEX. Está hecho por JesusFreke, el tipo que creó las famosas ROM para Android.


Debian reciente tiene el paquete Python androguard :

Description-en: full Python tool to play with Android files Androguard is a full Python tool to play with Android files. * DEX, ODEX * APK * Android''s binary xml * Android resources * Disassemble DEX/ODEX bytecodes * Decompiler for DEX/ODEX files

Instalar los paquetes correspondientes:

sudo apt-get install androguard python-networkx

Descompilar el archivo DEX:

$ androdd -i classes.dex -o ./dir-for-output

Extrae classes.dex de Apk + Decompile:

$ androdd -i app.apk -o ./dir-for-output

El archivo Apk no es más que el archivo Java (JAR), puede extraer archivos del archivo a través de:

$ unzip app.apk -d ./dir-for-output


El método más fácil para descompilar una aplicación de Android es descargar una aplicación llamada ShowJava desde playstore. Simplemente seleccione la aplicación que necesita ser descompilada de la lista de aplicaciones. Hay tres tipos diferentes de descompilador que puede usar para descompilar una aplicación:

CFR 0.110, JaDX 0.6.1 o FernFlower (descompilador analítico).



Mucho ha cambiado desde que la mayoría de estas respuestas fueron publicadas. Hoy en día hay muchas herramientas sencillas con GUI, como estas:

APK Easy Tool for Windows (GUI tool, friendly) Bytecode Viewer - APK/Java Reverse Engineering Suite URET Android Reverser Toolkit

El mejor lugar para encontrarlos es en el foro de desarrolladores de XDA.


Para aclarar un poco, hay dos caminos principales que puede tomar aquí dependiendo de lo que quiera lograr:

Descompilar el bytecode (dex) de Dalvik en una fuente de Java legible. Puede hacer esto fácilmente con dex2jar y jd-gui , como lo menciona Fred. La fuente resultante es útil para leer y comprender la funcionalidad de una aplicación, pero es probable que no produzca un código 100% utilizable. En otras palabras, puede leer la fuente, pero realmente no puede modificarla y volver a empaquetarla. Tenga en cuenta que si la fuente se ha ofuscado con proguard, el código fuente resultante será sustancialmente más difícil de desenredar.

La otra alternativa importante es desensamblar el smali de smali a smali , un lenguaje ensamblador diseñado precisamente para este propósito. He encontrado que la forma más sencilla de hacerlo es con apktool . Una vez que haya instalado apktool, puede apuntarlo a un archivo apk y obtendrá un archivo smali para cada clase contenida en la aplicación. Puedes leer y modificar el smali o incluso reemplazar las clases completamente generando smali desde la nueva fuente Java (para hacer esto, puedes compilar tu fuente .java en archivos .class con javac, luego convertir tus archivos .class en archivos .dex con Android) dx compiler, y luego use baksmali (smali disassembler) para convertir los archivos .dex a .smali, como se describe en esta pregunta . Puede haber un atajo aquí. Una vez que haya terminado, puede volver a empaquetar la copia de seguridad de apk fácilmente con apktool. Tenga en cuenta que apktool no firma la apk resultante, por lo que deberá cuidarlo como cualquier otra aplicación de Android .

Si sigues la ruta smali, deberías probar APK Studio , un IDE que automatiza algunos de los pasos anteriores para ayudarte a descompilar y recompilar una descarga e instalarla en un dispositivo.

En resumen, sus opciones son más bien para descomponerse en Java, que es más legible pero probablemente irreversible, o bien para desarmar a smali, que es más difícil de leer pero mucho más flexible para hacer cambios y volver a empaquetar una aplicación modificada. El enfoque que elija dependerá de lo que desee lograr.

Por último, la sugerencia de dare también es de destacar. Es una herramienta de retargeting para convertir archivos .dex y .apk a archivos java .class, de modo que puedan analizarse utilizando las herramientas típicas de análisis estático de java.



Si no estás buscando descargar dex2jar, entonces usa el apk_grabber python apk_grabber para descompilar cualquier apk en archivos jar. Luego las lees con jd-gui.


Una vez que haya descargado su archivo APK, debe realizar los siguientes pasos para obtener un código / documento Java editable.

  1. Convierta su archivo apk a zip (mientras inicie su descarga, no vaya a la opción "guardar", simplemente vaya a "guardar como" y mencione su extensión como .zip) haciendo esto puede evitar APKTOOL ...
  2. Extraiga el archivo zip, allí puede encontrar algún nombre de archivo. por lo que ahora tenemos que convertir dex -> .class
  3. Para hacer eso, necesita "dex2jar" (puede descargarlo de dex2jar , luego de extraerlo, en el símbolo del sistema que tiene que mencionar como, [D: / dex2jar-0.09> dex2jar somefilename.dex] (Ten en cuenta que tu somefilename.dex debe estar dentro de la misma carpeta donde guardaste tu dex2jar.)
  4. Descargue jad desde http://www.viralpatel.net/blogs/download/jad/jad.zip y extráigalo. Una vez extraído, puede ver dos archivos como "jad.exe" y "Readme.txt" (a veces "jad.txt" puede aparecer en lugar de "jad.exe", así que simplemente cambie el nombre de su extensión as.exe para ejecutar)
  5. Finalmente, en el símbolo del sistema que tiene que mencionar como [D: / jad> jad -sjava yourfilename.class] , analizará su archivo de clase en un documento java editable.

he utilizado

  1. dex2jar + jd-gui
  2. javadecompilers.com
  3. enjarificar
  4. Apktool

Pero ninguno supera las propias herramientas de google.

1) Android Studio 2.x: construir> analizar apk

2) Android Studio 3.0: Perfil o depuración APK


La ingeniería inversa de Android es posible . Siga estos pasos para obtener el archivo .java del archivo apk.

Paso 1 . Utilizando dex2jar

  • Genera un archivo .jar de un archivo .apk
  • comando: dex2jar sampleApp.apk

Paso 2 . Descompilar .jar usando JD-GUI

  • descompila los archivos .class, es decir, nos ofuscaremos .java de nuevo de la apk.

Una versión más completa de la answer de fred :

Forma manual

Primero necesita una herramienta para extraer todas las clases (compiladas) en el DEX a un JAR.
Hay uno llamado dex2jar , que está hecho por un estudiante chino.

Luego, puede usar jd-gui para descompilar las clases en el JAR al código fuente.
La fuente resultante debe ser bastante legible, ya que dex2jar aplica algunas optimizaciones.

Forma automática

Puedes usar APKTool . .dex automáticamente todas las clases ( .dex ), recursos ( .asrc ), luego convertirá XML binario a XML legible por humanos , y también desensamblará las clases por usted.
El desmontaje siempre será más robusto que el descompilado, especialmente con
JARs ofuscados con Pro Guard!

Simplemente diga a APKTool que decodifique el APK en un directorio, luego modifique lo que desea,
y finalmente codificarlo de nuevo a un APK. Eso es todo.

Importante: APKTool se desmonta. No se descompila .
El código generado no será fuente Java.
Pero debería poder leerlo, e incluso editarlo si está familiarizado con jasmin .
Si desea una fuente Java, repase el Manual .