安卓apk反编译过程——以豆瓣apk为例
一、环境和工具准备
环境:Windows 10
工具:apktool、dex2jar、jd-gui
命令行终端:PowerShell 7
二、 使用 apktool 获取AndroidManifest、XML文件和图片资源文件
2.1 安装 apktool
按照官网https://ibotpeaches.github.io/Apktool/install/要求的操作步骤进行安装和配置,可以选择配置环境变量或者直接移动文件。
apktool安装步骤2.2 使用apktool
打开命令行窗口,按照上述流程成功安装配置好的话,直接键入apktool即可出现以下提示信息:
apktool提示信息其中红框标注的即为经常使用的命令,其他参数用途可以见提示信息的解释。
如若反编译豆瓣apk,即可键入命令 apktool d .\com.douban.frodo.apk,即为反编译当前目录下的com.douban.frodo.apk文件,如果反编译过一次,则需要使用apktool d -f .\com.douban.frodo.apk命令,强制删除上一次生成的反编译目录。反编译后的目录结构如图:
豆瓣app反编译后的目录本次反编译受未能完全成功,但仍然得到了需要的AndroidManifest.xml文件和res资源文件。
三、使用 dex2jar和 jd-gui反编译并查看源代码
流程:使用dex2jar反编译出源代码,使用jd-gui查看源代码。
3.1 安装dex2jar并反编译apk文件
下载地址:https://github.com/pxb1988/dex2jar/releases
下载后解压,将解压目录配置到系统环境变量。
在命令行可以直接使用命令 d2j-dex2jar,信息如下:
dex2jar提示信息可以看到,直接使用命令dex2jar file.apk即可按默认参数反编译apk,我们在豆瓣apk存储目录下打开powshell,键入d2j-dex2jar .\com.douban.frodo.apk命令,即可反编译出com.douban.frodo-dex2jar.jar文件。
3.2 使用jd-gui查看源代码
下载地址:http://java-decompiler.github.io/
下载后,打开exe文件,打开刚刚反编译的jar文件,即可查看源代码,如图:
jd-gui打开的jar源码四、总结
目前大型公司开发的apk,多是multidex,即会有多个.dex文件,要使用2.1以上版本的dex2jar直接对apk文件进行反编译。