小白如何反编译vdex和odex

2,517 阅读1分钟

本文章是记录一下反编译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文件,下载链接:

bitbucket.org/JesusFreke/…

image.png

下载如上图两个文件。

具体操作是

//第一步生成 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。