一、工具  
1.1、使用工具
apktool (资源文件获取)
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar(源码文件获取)作用:将apk反编译成java源码(classes.dex转化成jar文件)
jd-gui (源码查看)
作用:查看APK中classes.dex转化成出的jar文件,即源码文件

1.2工具下载  
apktool下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads
dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/
jd-gui下载地址:http://jd.benow.ca/
APK反编译apktool+dex2jar+jd-gui-LMLPHP

二、Apk反编译流程
将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹,如下图所示:
APK反编译apktool+dex2jar+jd-gui-LMLPHP
2.1、使用apktool反编译apk得到图片、XML配置、语言资源等文件
进入CMD命令行,切换到上述的3个工具的所在目录,如:D:\soft\apk,
接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java中,运行可执行jar包的命令是:
java -jar jar包名.jar

java -jar apktool_2.3.4.jar d -f D:\apkde\Ky.apk -o Ky
java -jar apktool_2.3.4.jar d -f D:\apkde\Lh.apk -o Lh

APK反编译apktool+dex2jar+jd-gui-LMLPHP
APK反编译apktool+dex2jar+jd-gui-LMLPHP

反编译成功后,会在当前目录( D:\soft\apk)下生成一个Ky文件夹,打开Ky里面就有反编译后生成的文件,如下图所示:
APK反编译apktool+dex2jar+jd-gui-LMLPHP
生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件。

2.2、使用dex2jar反编译apk得到Java源代码
将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),如下图所示:
APK反编译apktool+dex2jar+jd-gui-LMLPHP
将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内,如下图所示:
APK反编译apktool+dex2jar+jd-gui-LMLPHP
在命令行下定位到dex2jar.bat所在目录,输入"d2j-dex2jar classes.dex",
命令执行完成之后,在当前目录下就可以看到生成的Jar文件了,如下图所示:APK反编译apktool+dex2jar+jd-gui-LMLPHP

APK反编译apktool+dex2jar+jd-gui-LMLPHP
把生成的classes-dex2jar.jar 拷入解压目录
APK反编译apktool+dex2jar+jd-gui-LMLPHP

2.3、使用【jd-gui】工具将class文件反编译成java源代码
反编译classes.dex得到classes-dex2jar.jar文件之后,就可以使用【jd-gui】工具将class文件反编译成java源代码了
APK反编译apktool+dex2jar+jd-gui-LMLPHP

APK反编译apktool+dex2jar+jd-gui-LMLPHP

APK反编译apktool+dex2jar+jd-gui-LMLPHP

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

10-07 19:15