2010-10-06 28 views
28

Estoy intentando realizar una ingeniería inversa de una aplicación de Android existente y comprender cómo se construye una IU concreta. Descubrí que puedo cambiar el nombre de la aplicación para comprimir y ver parte de la fuente compilada. El directorio res/layout está lleno con todos los archivos xml que definen la interfaz de usuario, pero si bien tienen la extensión xml, no están en formato XML. ¿Hay alguna forma de convertir estos archivos a marcas de texto?Extracción de .apk de Android y lectura de contenido de archivo XML en res/layout

+0

¿Qué es exactamente estás tratando de hacer ingeniería inversa? Si este es el producto comercial de alguien, no deberías estar jugando con eso. Si es de código abierto, debe ir al proyecto para ver el código. Diseñar diseños xml no es tan complicado en ningún caso ... ¿por qué no solo preguntas "cómo creo un diseño que se parece a X"? –

+0

Esa aclaración es útil. Tal vez sea una buena idea publicar una pregunta sobre cómo lidiar con este problema de alta resolución también (o en lugar de este). Alguien sabe cómo solucionarlo si hay una serie de aplicaciones que se muestran sin problemas. También recomendaría un poco de precaución en las preguntas de ingeniería inversa. El hecho de que sus intenciones sean puras no significa que los lectores posteriores serán lo mismo. –

+0

Es más rápido y más preciso buscar en el diseño XML de otra persona y luego publicar una Q aquí y esperar que alguien adivine. Siempre miro primero el archivo XML de los demás y luego pregunto "cómo mejorarlo". "Hackear" archivos XML no está nada mal (no me importaría romper mis archivos XML). Hackear la lógica de Java es algo malo e inmoral. – sandalone

Respuesta

32

creo que se puede utilizar android-apktool. Los archivos XML se ven muy bien.

+0

Estoy muy contento de ayudarlo – pengwang

+0

Me dirá cómo usarlo he descargado el archivo de este enlace y he obtenido un archivo jar. –

+0

carpeta smali y androidmanifest.xml es visible – Prasad

1

Primero encubierto su .apk a .zip. Dentro encontrará una versión compilada de los archivos de clase java llamados .dex. aplique el siguiente truco para convertir esa dex a archivos de clase

Hay una forma de hacerlo. Una forma levemente atípica es descargar esta herramienta de código abierto dextojarhttp://code.google.com/p/dex2jar/

Esto convertirá sus archivos dex en archivo Jar. Desbloquee estos archivos para obtener archivos de clase Java.

A continuación, realice ingeniería inversa de los archivos de la clase java para obtener el código java. No lo use para romper algunos proyectos comerciales.

Gracias

+0

Información útil, estoy buscando los archivos xml aunque no las clases de Java. – nolan

+0

este método no es compatible ahora, ¿conoce algún otro método que no sea apktool para obtener los archivos xml? – AndroidHacker

+0

Downvoted porque esto no contesta la pregunta. La pregunta específicamente se refiere al XML dentro de los APK, que está en un formato no textual. La respuesta correcta (usando android-apktool) permite la recuperación de estos archivos, pero simplemente cambiar el nombre a un archivo zip no lo hace. Usar 'dextojar' es útil pero no contribuye a responder la pregunta. –

-1

si lo que desea saber la construcción de interfaz de usuario, puede utilizar el Visor de Jerarquía

+0

Downvoted por no proporcionar un enlace, descripción o justificación – Penn

3

Crear una nueva carpeta y poner el archivo APK que desea decodificar en eso.

Descargue la última versión de here.

cmd

Abiertas a continuación, vaya al directorio raíz de APKtool y escriba el siguiente comando:

apktool d myApp.apk 

(donde myApp.apk es el nombre del archivo que desea decodificar)

Ahora usted tiene un archivo carpeta en esa carpeta y puede leer fácilmente los archivos xml de la aplicación.

Aquí es el link para más detalle las instrucciones de instalación

Cuestiones relacionadas