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
Respuesta
creo que se puede utilizar android-apktool. Los archivos XML se ven muy bien.
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 dextojar
http://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
Información útil, estoy buscando los archivos xml aunque no las clases de Java. – nolan
este método no es compatible ahora, ¿conoce algún otro método que no sea apktool para obtener los archivos xml? – AndroidHacker
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. –
si lo que desea saber la construcción de interfaz de usuario, puede utilizar el Visor de Jerarquía
Downvoted por no proporcionar un enlace, descripción o justificación – Penn
Crear una nueva carpeta y poner el archivo APK que desea decodificar en eso.
Descargue la última versión de here.
cmdAbiertas 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
- 1. Lectura de nombres de actividades del archivo apk en Android
- 2. Android XML extraído de APK - Codificación incorrecta
- 3. ¿Cómo ver los contenidos de un archivo APK de Android?
- 4. ¿Importar el archivo APK de Android?
- 5. La lectura de un archivo de texto o un archivo XML en Java Android
- 6. La extracción de datos desde un simple archivo XML
- 7. Archivo APK de Android: reactivar el archivo APK anterior en Google Play Store
- 8. Lectura del archivo xml de un recurso
- 9. Lectura y escritura de XML en C#
- 10. Lectura de un archivo XML a partir de los recursos
- 11. Lectura de un gran archivo XML usando stax y dom
- 12. lectura y XML escritura de archivos
- 13. Lectura de archivos de recursos desde mi propio APK en Android Entorno nativo
- 14. Extracción atributo de sólo lectura en un directorio usando C#
- 15. Archivo de texto sin formato de lectura de Android
- 16. Ignorar archivos de Android APK
- 17. Extracción de contenido de artículo HTML - Alternativa de Alchemy API
- 18. Android: lectura de XML del recurso local (para pruebas)
- 19. ¿cómo puedo reemplazar el archivo XML en APK?
- 20. Cómo mejorar el rendimiento de lectura de lectura XML
- 21. ¿Cuál es la diferencia entre "? Android:" y "@android:" en un archivo xml de diseño de Android?
- 22. archivo XML Abierto de res/xml en Android
- 23. Android Market y el nombre del archivo APK
- 24. Ubicación del archivo .apk
- 25. Lectura de texto de contenido de SyndicationContent
- 26. Diferencias de Android entre archivos .apk firmados y no firmados?
- 27. Android intento de inicio para ver apk
- 28. PHP: ¿Cómo obtener la versión del archivo android .apk?
- 29. extracción suma de los datos de XML en SQL
- 30. Lectura de contenido HTML de una URL en OCaml
¿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"? –
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. –
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