que - ¿Qué son los archivos ODEX en Android?
navegador dalvik (3)
Después de instalar algunas aplicaciones de android
, descubrí que cambiará a odex
archivo odex
(no apk
) en el teléfono inteligente. ¿Cómo sucede? ¿Quién puede enseñarme? Estoy muy interesado en eso.
Este artículo del Blog explica las partes internas de los archivos ODEX:
¿QUÉ ES UN ARCHIVO ODEX?
En el sistema de archivos de Android, las aplicaciones vienen en paquetes con la extensión .apk. Estos paquetes de aplicaciones o APK contienen ciertos archivos .odex cuya función supuesta es ahorrar espacio. Estos archivos ''odex'' son en realidad colecciones de partes de una aplicación que están optimizadas antes del arranque. Hacerlo acelera el proceso de arranque, ya que precarga parte de una aplicación. Por otro lado, también dificulta el pirateo de esas aplicaciones porque una parte de la codificación ya se ha extraído a otra ubicación antes de la ejecución.
ART
En ART, los archivos .odex
contienen:
contiene el código compilado AOT para los métodos en el APK.
según los documentos: http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/configure
Además, parecen ser bibliotecas compartidas regulares, ya que si obtienes alguna aplicación, y compruebas:
file /data/app/com.android.appname-*/oat/arm64/base.odex
dice:
base.odex: ELF shared object, 64-bit LSB arm64, stripped
y aarch64-linux-gnu-objdump -d base.odex
parece funcionar y proporcionar un desensamblaje significativo (pero también algunas secciones de basura).
El artículo del blog es en su mayoría correcto, pero no completo. Para tener una comprensión completa de lo que hace un archivo odex, debe comprender un poco cómo funcionan los archivos de la aplicación (APK).
Las aplicaciones son básicamente archivos ZIP glorificados. El código java se almacena en un archivo llamado classes.dex y este archivo es analizado por Dalvik JVM y un caché del archivo class.dex procesado se almacena en la caché Dalvik del teléfono.
Un odex es básicamente una versión preprocesada de classes.dex de una aplicación que está lista para ejecución para Dalvik. Cuando una aplicación está odexed, classes.dex se elimina del archivo APK y no escribe nada en el caché de Dalvik. Una aplicación que no está odexed termina con 2 copias del archivo classes.dex, el empaquetado en el APK y el procesado en el caché Dalvik. También lleva un poco más de tiempo iniciarse por primera vez desde que Dalvik tiene que extraer y procesar el archivo classes.dex.
Si está compilando una ROM personalizada, es una muy buena idea odexar tanto sus archivos JAR de framework como las aplicaciones de stock para maximizar el espacio de almacenamiento interno para las aplicaciones instaladas por el usuario. Si quieres el tema, simplemente deodex -> aplica tu tema -> reodex -> versión.
Para realmente deodex, use small y baksmali: