0x00 问题呈现
在分析某手机自带应用时,为了在JEB中反编译,将其adb pull到了电脑上。解压后发现如下文件:
惊奇的发现该APK包中没有dex文件,一开始特别疑惑没有dex文件,也就是没有代码,那是如何运行的呢?
其实APK文件中的dex文件被odex化了,该处理方式有以下好处:
- odex是从apk文件中提取出classes.dex文件,并通过优化生成一个可运行的文件单独存放。
- 应用保护,一般情况下有odex的应用,其对应的apk文件中只存留资源文件,或者破损的dex文件,这样在反编译的情况下得不到正确的应用数据,同时也无法安装使用。
具体原理就不说了,本文旨在如何将APK包重组使得JEB可以反编译。
了解到odex机制后,目标就是找到该APK对应的odex文件,而该odex文件名是和包名一致的,所以很容易找到: