前言
最近比较闲,昨天在一篇博客中看到了Android的反编译,可是我自己从没尝试过反编译,于是今天好好试了试,从网上看到好多反编译的工具包及博客,可是编译的时候总是报错,于是想起了以前看的一篇微信公众号推送的文章讲的是反编译,迅速找到这篇文章,按照流程,最终反编译成功,记录下这个令人兴奋的过程,参考的微信公众号是:Android开发中文站,文章是“Android APK反编译就这么简单详解(图文详解)”。
反编译工具
apktool、 dex2jar、 jd-gui
apktool:获取资源文件,可以提取出图片文件和布局文件,下载地址: https://bitbucket.org/iBotPeaches/apktool/downloads/
dex2jar:将apk反编译成Java源码(classes.dex转成jar文件),下载地址: https://sourceforge.net/projects/dex2jar/files/
jd-gui:查看工具,可以查看通过dex2jar转成的.class文件(源码文件),下载地址:http://jd.benow.ca/
反编译的APK是test.apk
反编译过程:
1.用apktool反编译出图片文件和资源文件
首先解压下载的最新的apktool的jar包,我下载的是apktool_2.2.4.jar
然后把下载的jar包和test.apk放在同一个文件夹下,打开cmd,输入: java -jar apktool_2.2.4.jar d test.apk 即可反编译,如下图:
在文件夹下多了一个test的文件夹;
res便是所有的资源文件,还得到Manifest.xml,smali文件夹下全是**.smali文件,即JVM语言文件。
2.反编译出.java的类
首先把要反编译的apk的后缀名改成.rar或.zip,不知道怎么修改后缀名的可百度,然后重新解压,(可以发现,解压后我们也可以得到资源文件),然后得到class.dex这个文件。
下载
然后解压,把刚刚得到的class.dex这个文件放到解压后的目录中,如:解压并放入class.dex文件后的目录为:
运行命令行工具cmd,进入dex2jar-2.0这个目录,运行命令:d2j-dex2jar.bat classex.dex,如下图:
命令行工具会出现:
结束后,即完成,得到:classes-dex2jar.jar,目录如下图:
然后下载jd-jui,
解压后直接打开jd-jui.exe,然后打开刚才的classes-dex2jar.jar,即可看到源码。