以下方法均对于那些没做安全保护的apk应用生效。如果做过一定的保护,如混淆或加壳等均不一定适用,需要再进一步解密。

方法一:在线反编译

网址:http://www.javadecompilers.com/apk

打开网页上传APK就可以在线编译了,不过速度比较慢,等一段时间好了就下载解压内容。据说对于比较大型的APK容易出错。

我试了个30M的apk,效果还可以,基本把全部源码都解出来了。

方法二:利用apktool工具获得 图片资源 和 androidmainfest.xml

1.下载apktool. 下载地址:https://ibotpeaches.github.io/Apktool/install/ 

根据网站的提示选到合适的系统版本,并按照上面说明修改对应名字后,运行命令行 apktool ,发现能用(就是没有提示找不到该命令),继续。

使用ApkTool对apk进行反编译

在cmd命令行中进入ApkTool的文件夹,反编译命令:apktool.bat d [apk文件] [输出文件夹] 

注意:

1、(一般可以不加)如果不加 -o 的话会报错Input file (C:\Users\Administrator\Desktop\apktool) was not found or was not readable.                                                                     

2、 输出文件夹不要指定在apktool.bat文件所在目录不然会出Destination directory (C:\Users\Administrator\Desktop\apktool) already exists. Use -f switch if you want to overwrite it.

例如我的就是

apktool.bat d -f  D:\反编译工具\apktool\app-release.apk  -o djjjtext

就是对D盘路径中的app-release.apk 进行反编译。 输出文件夹名字为djjjtext (默认路径是C:\Users\用户\djjjtext)

最后得到的内容是  res资源文件 + 非乱码的Androidmainfest.xml + 部分代码(smail文件)

方法三:利用dex2jar + jd-gui 获得java源码

下载dex2jar. 下载地址:http://sourceforge.net/projects/dex2jar/files/

解压新下载的dex2jar,得到一堆.sh 和 .bat 文件。

再对着apk解压(直接右键解压或改后缀名为压缩文件再解都一样),得到dex文件和各种各种杂七杂八的。甚至因为代码太多能得出好几个dex

apk工具下载 反编译android apk反编译工具安卓版app_jar

把dex文件放到dex2jar文件夹下执行下面命令行。(不放也行,会自己补全路径就好)

d2j-dex2jar.bat classes.dex

结果如下

apk工具下载 反编译android apk反编译工具安卓版app_下载地址_02

得到  classes-dex2jar.jar文件

然后下载jd-gui. 

直接打开jd-gui.exe工具,在里面找到刚才的classes_dex2jar.jar,就可以得到java代码了。这个就不截图了。

方法四:通过各种整合工具直接反编译

其实原理就是通过上面的方法,整合到一起变成一键工具。

【1】Android逆向助手

【2】Smali2Java

【3】Gapktool.jar