Android安卓反编译apk源代码

需要用到三个工具:

1、dex2jar    用于将dex文件转换成jar文件
2、jd-gui       用于将jar文件转换成java代码
3、apkTool   还原APK文件中的9-patch图片、布局、字符串等等一系列的资源 

这里提供工具下载地址:https://download.csdn.net/download/qq15577969/12894652

一、配置java环境变量,不懂配置的看我下面这篇文章

https://blog.csdn.net/qq15577969/article/details/79515621

二、解压apk文件

举例我的apk文件是demo.apk,直接右键解压(也可以把后缀名apk改成zip再解压)

三、dex转换成jar

解压好的文件目录里有个classes.dex,这个classes.dex文件就是存放所有java代码的文件,我们将它拷贝到dex2jar-2.0目录下,打开cmd命令窗口,在dex2jar-2.0目录下执行命令:d2j-dex2jar classes.dex ,执行结果如下图:

四、jar文件转换成java代码

1、打开jd-gui-windows-1.4.0目录,双击打开jd-gui.exe程序,如下图:

2、把刚才生成的classes-dex2jar.jar文件直接拖到jd-gui窗口里,然后就可以查看java源代码了,如下图:

五、反编译资源文件

1、资源文件在打包的时候被编译过了,我们直接打开的话是看不到明文的。这个时候就需要使用apkTool工具来反编译资源文件,将demo.apk文件拷贝到apkTool目录里,打开cmd命令窗口,在apkTool目录下执行命令:apktool d demo.apk ,其中d是decode的意思,表示我们要对demo.apk这个文件进行解码,执行结果如下图:

apktool d命令的其他附加参数:

  • -f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
  • -o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
  • -s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
  • -r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。

2、反编译成功后,AndroidManifest.xml等文件都可以直接查看到源代码了,如下: