优化apk的odex处理

前文讲到了apk的反编译流程,但在有的情况下会出现apk的资源文件和代码文件分开的情况,这种情况会出现如下目录结构,并且在apk文件里面并没有dex文件。

结构图

此时就需要将apk和odex合并了,其思路就是将odex->smali->dex,然后添加到APK,如果只是反编译,到这一步就行了,如果要生成可运行软件那个则需删掉META-INF文件(为了后续重签名),重新签名APK。

所需工具

合并流程

  1. 将xxx.odex放在与framework同级目录下,有的平台不需要framework文件夹,例如我实验的平台只需要framework/arm/boot.oat文件,将其放在与xxx.odex同级目录,此时不需要framework文件夹。
  2. 输入以下命令,将odex转化为smali文件
    java -jar baksmali-2.2.2.jar x xxx.odex -d framework\
    此时会生成一个out目录,此目录就是生成的smali目录。
  3. 输入以下命令,将smali转化为dex文件
    java -jar smali-2.2.2.jar a out\ -o classes.dex
    此时会生成一个classes.dex的文件。
  4. 经过以上步骤 odex就已经转化为dex,将其添加到apk中(apk实际上是个压缩包)。

后续步骤

Donate comment here