本文章是记录一下反编译vdex和odex的过程。
为什么需要反编译这个东西
在有些机型上,system/app 目录下的系统应用就是一个apk,所以直接用jadx就可以反编译了。
但是有些机型上,不是单独一个apk。比如下图。
odex 反编译成 dex
1.下载baksmali-2.5.2.jar和smali-2.5.2.jar,baksmali用来反编译odex文件,smali用于将odex文件反编译生成的smali文件,重新打包成dex文件,下载链接:
下载如上图两个文件。
具体操作是
//第一步生成 out 目录,里面都是 smail 文件
java -jar baksmali-2.5.2.jar d xx.odex
//第二部将生成的smail文件转成dex
java -jar smali-2.5.2.jar a out
转成了dex,我们就可以使用 jadx 了。
vdex
使用工具编译
GitHub - anestisb/vdexExtractor: Tool to decompile & extract Android Dex bytecode from Vdex files
Mac电脑上也可以进行编译,遇到过一个报错,询问chatGPT解决了,可见不懂C也能改问题
别人编译好的
GitHub - fOmey/compact_dex_converter: cdex to dex binarys
vdex 转 cdex
$ bin/vdexExtractor -i xx.vdex -o ./ --deps -f
cdex 转 dex
adb push compact_dex_converter /data/local/tmp/
adb shell chmod 777 /data/local/tmp/bin/compact_dex_converter
adb push your.cdex /data/local/tmp/classes.cdex
adb shell "/data/local/tmp/compact_dex_converter /data/local/tmp/classes.cdex"
adb pull /data/local/tmp/classes.cdex.new your.dex
取出dex后依然是jadx。