准备环境
1.下载baksmali-2.5.2.jar和smali-2.5.2.jar,baksmali用来反编译odex文件,smali用于将odex文件反编译生成的smali文件,重新打包成dex文件,下载链接:
https://bitbucket.org/JesusFreke/smali/downloads/
2.下载dex2jar-2.0,用于将dex文件编译成jar文件(可以下载dex-tools-2.1和dex2jar-2.0 两个版本),github地址:
https://github.com/pxb1988/dex2jar
3.下载jd-gui.exe,用于查看java代码:
https://github.com/java-decompiler/jd-gui
反编译.odex文件
1.新建文件夹,把baksmali、smali文件连同dex文件和vdex文件放在同一个文件内,odex和vdex文件名字要保持一致。
2.使用baksmali反编译odex文件,反编译命令:java -jar baksmali-2.5.2.jar d SystemUI.odex
执行此命令后会在当前文件夹内生成一个名为out的文件夹,此文件内即反编译生成的smali文件,如图所示:
3.使用smali将上一步生成的文件重新打包成dex文件,打包命令:java -jar smali-2.5.2.jar a out,执行
此命令后会生成名为out.dex的文件,如图所示:
反编译.dex文件
4.将上一步生成的out.dex文件拷贝到dex2jar-2.0文件夹下(dex2jar-2.0压缩包解压后的文件夹),
执行命令:d2j-dex2jar.bat out.dex,会生成out-dex2jar.jar和out-error.zip文件,至此反编译完成,如图所示:
5.双击打开下载好的jd-gui.exe,打开上一步生成的out-dex2jar.jar文件,即可查阅java源码:
反编译.vdex文件
1.反编译.vdex文件需要利用vdexExtractor工具,下载地址:
https://github.com/anestisb/vdexExtractor
安装及使用参照:https://blog.csdn.net/Alexwym/article/details/107730906
安装编译vdexExtractor根据上面链接的安装提示如图:
2.将.vdex文件转为.dex文件
进入vdexExtractor工具的bin目录下,执行./vdexExtractor.exe -i xxx.vdex或./vdexExtractor.exe -i xxx.vdex -o ./ 指令。便可在当前目录下生成相应的dex文件如图:
3.注意:某些.vdex 可能会报错,需要在后面添加, --ignore-crc-error,反编译Dex 忽略CRC错误
- 参考上面反编译.dex文件
Tips
1.如果baksmali.jar 其他版本的包,可能使用方法不同,请help。
2.dex转jar的时候dex2jar-2.0 版本可能不支持版本,换成dex-tools-2.1,如图:
如果本文有帮到你,记得点赞加关注哦
参考:
https://blog.csdn.net/sj18624326200/article/details/111286047
https://blog.csdn.net/qq_32072451/article/details/86626004
https://blog.csdn.net/Alexwym/article/details/107730906