Android反编译之vdex转dex查看源码
前言
最近获取到客户Apk(客户版本Android 9)后使用工具没法看到源代码,system/priv-app/Media目录结构如下:
C:.
└─oat
└─arm64
├─Media.odex
└─Media.vdex
└─Media.apk
Media.apk中只有相关的资源文件,源代码都在Media.vdex和Media.odex中,如果需要看源码,需要反编译。
下面简单介绍一下反编译Media.vdex的过程。
好记性不如烂笔头
正文
涉及系统环境和工具如下
系统: Ubuntu 和 Windows
工具: vdexExtractor、compact_dex_converter 以及jadx-gui-1.1.0-no-jre.exe
- vdexExtractor和compact_dex_converter 需要Ubuntu
- jadx-gui-1.1.0-no-jre.exe 需要Windows
环境配置
vdexExtractor和compact_dex_converter的下载地址
点击我下载 --> vdex2dex_linux64.tar 提取码:l9ls
下载后就上传到Ubuntu,层级如下:
.
├── compact_dex_converter
├── input
├── output
└── vdexExtractor
PS: 上面压缩包中已经创建了,直接上传即可。
在Ubuntu环境下,下面以Media.vdex为例,把Media.vdex上传到input目录
.vdex转.cdex
./vdexExtractor -i input/Media.vdex -o output/
打印信息如下:
root@ubuntu:/home/water/vdex2dex_linux64# ./vdexExtractor -i input/Media.vdex -o output/
[INFO] Processing 1 file(s) from input/Media.vdex
[INFO] 1 out of 1 Vdex files have been processed
[INFO] 1 Dex files have been extracted in total
[INFO] Extracted Dex files are available in 'output/'
.cdex转.dex
./compact_dex_converter ./output/Media_classes.cdex
打印信息如下:
root@ubuntu:/home/water/vdex2dex_linux64# ./compact_dex_converter ./output/Media_classes.cdex
Opened './output/Media_classes.cdex', DEX version '001'
compact_dex_converter I 04-12 03:53:06 9727 9727 compact_dex_converter_main.cc:175] StandardDex file successfully extracted to ./output/Media_classes.cdex.new
上一步获取到了新的Media_classes.cdex.new文件,其实已经是dex文件了,为了方便,可以把后缀改为.dex,如下
Media_classes.cdex.new.dex
jadx-gui查看.dex文件
在Window上打开jadx-gui-1.1.0-no-jre.exe,把Media_classes.cdex.new.dex拖进入,即可查看源码了。
大哥,打赏了要这里留言或关注公众号说明情况(不回复,我没法主动回复你。尴尬),要不然我没法联系你们和不知道你们需要那篇文章。