第四章 常见的 Android 文件格式(六)(ODEX)

第四章 常见的 Android 文件格式(六)(ODEX)

文章目录

ODEX

生成 ODEX 文件

ODEX 文件格式

将 ODEX 文件转换成 DEX 文件

ODEX

在 Android 5.0 前,主要使用的虚拟机是 Dalvik。当 APK 首次安装,或系统升级、重新启动时,为提高 DEX 的执行效率,Dalvik 会对 APK 中的 DEX 进行一定程度的优化。具体做法:解析 DEX 并生成一个 ODEX 文件,将其存放在 Android 设备的 /data/dalvikcache 目录下。以后在运行这个程序时,就不会读取 APK 中的 DEX,而是直接加载这个优化过的 ODEX,从而大大节省每次运行程序时在优化上花费的时间

生成 ODEX 文件

系统生成 ODEX 的方法是内部调用系统命令 dexopt。此命令不允许直接调用生成 ODEX,但 Android 在 Dalvik 时代的早期版本中,会在系统源码的 build/tools/dexpreopt/dexopt-wrapper 目录下提供 dexopt-wrapper 工具,可用于手动生成 ODEX

以 Crackme0201 为例,除了在 /data/dalvik-cache 目录下直接拿到 ODEX,也可执行如下命令生成 ODEX(执行此命令要有设备的 Root 权限)

登录设备的 shell:adb shell

提升权限:su

进入指定目录:cd /data/local/tmp

生成 ODEX:dexopt-wrapper /data/app/com.droider.crackme0201-1.apk crackme0201.odex

获取设备中的 ODEX:adb pull /data/local/tmp/crackme0201.odex .

ODEX 文件格式

完整的 OD

相关推荐