2011-04-07 29 views

Respuesta

89

No, APK Gestor decompiles el archivo .dex en .smali y binarios .xml a XML legible por humanos.

La secuencia (basado en APK Administrador de 4,9) es para seleccionar el paquete, y luego de descompilarlo. Si presiona 1 en lugar de 9, simplemente lo descomprimirá (solo es útil si desea intercambiar imágenes .png).

No hay ninguna herramienta disponible para descompilar de nuevo a archivos .java y muy probablemente no será ninguna. Existe una alternativa, que es usar dex2jar para transformar el archivo dex en un archivo .class, y luego usar un descompilador de jar (como jd-gui) para texto simple java. Sin embargo, el proceso está lejos de ser óptimo y no generará código de trabajo, pero es lo suficientemente decente como para poder leerlo.

dex2jar: http://code.google.com/p/dex2jar/

JD-GUI: http://jd.benow.ca/

Editar: sabía que estaba en algún lugar aquí en SO a una pregunta con respuestas muy similares ... decompiling DEX into Java sourcecode

+13

** Disculpa, ¿quieres decir jd-gui _won't_ generate _código de trabajo _? ** Un descompilador debe generar código de trabajo; si no, entonces no estamos realmente hablando de un decompilador. ¿No lo crees? –

+0

entonces cómo empacar los archivos editados (.java/.class/.smali/.jar) de nuevo en un archivo apk .. pls help. –

+6

JD-GUI se acerca bastante, pero no lo suficientemente cerca. –

1

Secundo eso.

Dex2jar generará un jarro WORKING, que puede agregar como fuente del proyecto, con los xmls que obtuvo de apktool.

Sin embargo, JDGUI genera archivos .java que tienen, la mayoría de las veces, errores.

Tiene algo que ver con la ofuscación del código, supongo.

24

dex2jar ayuda a descompilar su apk pero no al 100%. Tendrá algunos problemas con los archivos .smali. Dex2jar no puede convertirlo a java. Conozco una aplicación que puede descompilar tus archivos fuente apk y no tiene problemas con los archivos .smali. Aquí hay un enlace http://www.hensence.com/en/smali2java/

+1

Explique, por favor, ¿por qué mi respuesta fue downvoted? – Daryn

+0

Deseo que vote doblemente esto para contrarrestar al votante de abajo. La aplicación vinculada funciona como un encanto. Esta debe ser la opción más fácil que dex2jar. – chedine

+0

No puedo guardar los archivos decompilados –

4

Mi recomendación es Virtuous Ten Studio. La herramienta es gratuita pero sugieren una donación. Combina todos los pasos necesarios (desempaquetar APK, baksmaliing, descompilación, etc.) en un único proceso de importación basado en la interfaz de usuario fácil de usar. En cinco minutos debe tener el código fuente de Java, menos de lo que se necesita para descubrir las opciones de línea de comando de una de las herramientas mencionadas anteriormente.

Decompilar smali a Java es un proceso inexacto, especialmente si los pequeños artefactos pasaron por un ofuscador. Puede encontrar varios descompiladores en la web, pero solo algunos de ellos se mantienen. Algunos le darán mejor código decompilado que otros. Lea "mejor" que en "más comprensible" que otros. No espere que el código Java de ingeniería inversa compilará de la caja.Virtuous Ten Studio viene con varios descompiladores gratuitos de Java integrados para que pueda probar fácilmente diferentes decompiladores (el paso "Generar fuente Java") para ver cuál le ofrece los mejores resultados, ahorrándole el tiempo de encontrar esos descompiladores usted mismo y figurar cómo usarlos Entre ellos se encuentra CFR, que es uno de los pocos descompiladores libres y todavía mantenidos.

Como salida, se recibe, entre otras cosas, una estructura de carpetas que contiene todo el código fuente de Java descompilado. A continuación, puede importar esto en IntelliJ IDEA o Eclipse para su posterior edición, análisis (por ejemplo, Ir a la definición, Buscar usos), etc.

+0

Christoph, ¿Virtuous Ten Studio es compatible con la refactorización de métodos/clases en pequeña escala? –

+7

¿Podría decirnos su afiliación con Virtuous? – Sirens

+1

Virtous no convierte smali en java correctamente. Otorga errores que indican que el archivo .java no se encuentra donde debe generar por sí mismo. Perdida de tiempo –

22

Hay un nuevo plateform de cruz (Java) y una herramienta de código abierto, que le permiten hacer eso, simplemente la caja https://bytecodeviewer.com

enter image description here

==== =====

EDIT: A partir de abril de 2017, hay una nueva herramienta de código abierto desarrollada por google, que está destinado a hacer justo lo que hemos estado buscando =>http://classyshark.com

+1

Esta herramienta aparece con 'Java exception' en el inicio – fnc12

+0

Una solución simple para' Java exception' al inicio se estaría ejecutando con jdk7 en la línea de comandos: 'java -jar BytecodeViewer xyz jar '. Para asegurarse de que está trabajando con jdk7, verifique la salida de 'java -version' – denolk

+0

Classyshark no emite código Java. Citando la descripción: "Puede buscar de manera confiable cualquier ejecutable de Android y mostrar información importante, como interfaces de clases y miembros, cuentas dex y dependencias". –

Cuestiones relacionadas