本文笔者粗略的介绍如何利用一些工具,对Android进行反编译,从而得到源码,希望对你有所帮助,笔者的android环境为4.4.2。

1.准备资源.

在开始之前,需要准备三项工具:

apktool

作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看

dex2jar

作用:将apk反编译成java源码(classes.dex转化成jar文件)

jd-gui

作用:查看APK中classes.dex转化成出的jar文件,即源码文件

2.获取资源文件

使用apktool这个工具获取资源文件,下载apktool 会获得三个文件:aapt.exe、apktool.bat、apktool.jar 、

接下来将需要反编译的APK文件放到该目录下,

打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令: apktool.bat d -f test.apk test

android apk反编译软件 apk反编译安卓_反编译

(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat   d  -f    [apk文件 ]   [输出文件夹])

android apk反编译软件 apk反编译安卓_android apk反编译软件_02

说明获取成功,之后发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。

打开资源文件后,可以看到里面有res和smali文件夹,res文件夹中放的是图片和XML等一些文件资源,smali里面放的是代码,文件都是.smali格式的,不方便阅读。

如果你想将反编译完的文件重新打包成apk,那你可以:输入 apktool.bat b test(你编译出来文件夹) 便可,效果如下:

android apk反编译软件 apk反编译安卓_android apk反编译软件_03

之后在之前的test文件下便可以发现多了2个文件夹:

dist(里面存放着打包出来的APK文件)

3.获取Java源码文件

第二步获得的smali文件不方便阅读,接下来获取源码。

下载好dex2jar和jd-gui后 ,解压

将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),

将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,

android apk反编译软件 apk反编译安卓_资源文件_04

在命令行下定位到dex2jar.bat所在目录,输入 dex2jar.bat classes.dex ,效果如下:

android apk反编译软件 apk反编译安卓_jar_05

被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):

android apk反编译软件 apk反编译安卓_资源文件_06

这种方式可以反编译,但是经过笔者的测试,发现反编译后的源码文件,或多或少都有一些错误。