Android反编译APK
一、前言
我们在进行Android开发的时候,经常会和各种APP打交道,有些时候,我们看见了一些值得我们学习和借鉴的界面以及方法,可是不知道怎么做,这个时候就可以利用反编译APK技术,来学习他人的代码,提升开发水平。
二、准备工具
1、工具:
1.1 dex2jar 将.dex文件转换成.jar文件
1.2 JD-GUI 获取java源码
1.3 apktool 获取.apk文件的资源(.xml文件、图片资源等)
2、工具下载
2.1 dex2jar
https://sourceforge.net/projects/dex2jar/
2.2 JD-GUI
这两个地址都可以下载,大家可以根据自己的系统选择要下载的版本
https://github.com/java-decompiler/jd-gui/releases
http://java-decompiler.github.io/
2.3 apltool
先下载apktool,然后还要下载运行脚本,运行脚本可在资源打包下载链接中获取
https://bitbucket.org/iBotPeaches/apktool/downloads/
三、开始工作
1、APK的解压缩
1.1、将预先准备好的APK安装包重命名为一个压缩包文件
1.2、将压缩包文件解压到当前文件夹
1.3、这里面的文件布局就和安卓开发的文件布局差不多,比如进入res中,就可以看见更多界面的布局,但是此时xml文件打开还是一堆乱码,不过我们可以得到图标文件
1.4、java代码被打包在.dex文件中
2、利用dex2jar获取.jar文件
2.1、将下载好的dex2jar压缩包解压
2.2、将解压后的APK文件夹中的.dex文件复制到dex2jar文件子目录下
2.3、win+R打开“运行”,输入“cmd”,打开命令行程序,cd进入dex2jar所在目录,然后输入"d2j-dex2jar.bat classes.dex"
2.4、就会在同目录下生成“classes.dex2jar.jar”文件
2.5、有了.jar文件后就可以用JD-GUI获取java源码啦
3、利用JD-GUI获取java源代码
3.1、将下载好的压缩包解压
3.2、双击运行“jd-gui.exe”
3.3、打开之前生成的.jar文件
3.4、然后就可以查看文件的源码啦,只不过这里面的类名有点奇怪,是一些a,b,c,d
4、利用apktool获取图片和XML
4.1、将下载的"apktook_2.6.0.jar"改名为“apktool.jar”
4.2、可以新建一个文件夹,将apktool.jar和apktool.bat以及.apk都放进去
4.3、打开命令行,切换到这个目录下,输入“apktool d base.apk”
4.4、开始漫长的等待,结束后就可以查看图片资源以及.xml文件,不再是乱码
问题与解决方法
1、不知道为什么,dex2jar下载不了,可能是网络延迟的问题,科学上网后可以解决
2、在win11系统下,dex2jar和apktool.jar的运行均无反应,后来在win10系统中成功运行