1、使用工具

1、apktool:提取资源文件,即图片文件和布局文件
2、dex2jar:将apk反编译成java源码(classes.dex转化成jar文件)
3、jd-gui:查看APK中classes.dex转化成出的jar文件

为了方便,将三个文件放在同一级目录,如下:

2.1、使用apktool提取资源文件

进入终端并切换到工具所在目录:

将名为app-release.apk的安装包也放于该目录,并执行以下命令:

1
java -jar apktool_2.3.1.jar d -f app-release.apk -o info

这个命令是启动apktool_2.0.1.jar将”app-release.apk”这个apk反编译,然后将反编译生成的文件存放到当前目录的一个info文件夹中,这个文件夹的名字是可以随便取,结果如下图:

生成的文件和文件夹当中,res文件夹和AndroidManifest.xml文件就有我们想要看到的东西了,想查看哪个xml文件就使用文本编辑器都可以看到。

2.2、使用dex2jar反编译classes.dex

将要反编译的APK后缀名改为.rar或者 .zip,得到其中的classes.dex文件,将其放到之前解压出来的工具dex2jar-2.0文件夹内,如下图所示:

在命令行下定位到dex2jar.bat所在目录,Windows执行如下命令:

1
d2j-dex2jar classes.dex   // 生成classes-dex2jar.jar

MAC执行如下命令:

1
2
chmod +x d2j-dex2jar.sh d2j_invoke.sh //增加权限
./d2j-dex2jar.sh classes.dex // 生成classes-dex2jar.jar

效果如下:

2.3、使用jd-gui打开classes-dex2jar.jar

打开jd-gui,将生成的classes-dex2jar.jar直接拖入其中即可查看:

JD-GUI虽然可以将class反编译成java源代码,但是对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c….之类的样式命名)