Android中vdex、cdex、odex和dex转换
针对android9.0及以上,vdex转dex
framework源码目录:/system/framework/arm64/boot-framework.vdex
1. vdex转cdex
利用vdexExtractor工具反编译vdex,将其转换为cdex
工具目录:/Applications/tool/vdexExtractor-master/bin/vdexExtractor
如:需要转换 boot-framework.vdex
$ vdexExtractor -i boot-framework.vdex -o out
在out目录中得到反编译后的cdex文件(三个)
2. cdex转dex
工具目录:
/Applications/tool/vdexExtractor-master/9.0_darwin-x86_64_shared/bin/compact_dex_converter
$ mkdir cdexfile // 生成转换结果的输出目录
$ ./bin/compact_dex_converter -w cdexout ./boot-framework_classes.cdex
在cdexfile目录下获取转换后的文件,将文件后缀改为dex(此时结尾虽然是cdex,但已经是dex文件),通过jadx或jd-gui查看dex
3. odex转dex
工具目录:tools/smali-2.3.4/baksmali
$ tools/smali-2.3.4/baksmali deodex xxx.odex
4. vdex转dex
工具目录:tools/vdexExtractor-master/bin/vdexExtractor
$ tools/vdexExtractor-master/bin/vdexExtractor -i xxx.vdex -o out