如何反编译apk文件

什么是apk呢?
APK(全称:Android application package,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。 一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), 原生资源文件(assets),证书(certificates),和清单文件(manifest file)。

反编译需要用到的三个工具,
apktool:反编译apk文件获取资源文件,也可以将反编译后的文件重新打包成apk文件
dex2jar:将dex文件转换成jar文件
jd-gui,将jar文件转换成源码
这三种工具的下载不再多说,百度随便一搜索就有

  1. 使用apktool解析apk文件
    在cmd窗口中使用如下命令
    java -jar apktool.jar d -f D:\hackerUtils\hackerUtils\android\安卓逆向\com.qzsp.v11161.apk -o 111
    -f参数是apk文件路径,-o参数是把解析后的文件放在111目录中,也可以是绝对路径,如图
    如何反编译apk文件
    解析之后获得文件目录结构
    如何反编译apk文件
    如果想把反编译之后的文件重新打包成apk文件,需要以下命令,apktool.bat b 111,111是反编译之后的文件夹,执行命令效果如下图
    如何反编译apk文件
    执行命令完成之后,在111文件夹中会多出两个文件夹,build和dist,其中dist存放着重新打包好的apk文件
  2. 使用dex2jar将dex文件转换成jar文件
    首先把apk文件进行解压,我这里使用7-zip工具进行解压,解压之后的文件目录如下图
    如何反编译apk文件
    然后执行命令dex2jar.bat classes.dex,如下图
    如何反编译apk文件
    执行完成之后,在dex2jar目录下会生成一个classes-dex2jar.jar文件
  3. 使用jd-gui查看源码
    打开jd-gui程序,将jar包直接拖拽到程序中,效果如图

如何反编译apk文件