前言
说到反编译,大家可能都不陌生,尤其是我们做开发,写程序的,在我平时的开发过程中,会遇到很多困难,尤其是一些特效的实现,自定义view之类的效果,看到很多的应用有很多特别好的效果,就想着这个到底是如何实现的,特别想要借鉴一下,可是没有源代码,就根本不知道他是如何实现的,在这种情况下,我想到的是反编译,就是用到一些工具,把人家的apk文件编译成我们能看得还算懂得Java源代码,所以学会了反编译,多么好的效果,我们都可以知道人家是如何实现的。
反编译所需要的工具
工具介绍
- apktool :用于资源文件获取,可以提取出图片文件和布局文件进行使用查看
- dex2jar :用于将apk反编译成Java源码(classes.dex转化成jar文件)
- jd-gui :用于查看APK中classes.dex转化成出的jar文件,即源码文件
以下我将结合这几个工具做一个如何反编译一个APK的示例流程
下载上面的三个工具,下载下来的是三个压缩包
解压这三个压缩包
为了方便,直接把apk文件放在apktool文件夹下
打开命令行界面,定位到apktool文件夹
在此处输入命令apktool.bat d -f test.apk test 回车,出现以下界面,表示该命令执行成功
你会发现apktool文件夹下多了一个文件test,里面你就看到资源文件以及一些配置文件了
到这里还只能看到一些资源文件,接下来来反编译java源文件,先将apk文件的后缀改为.jar或者.zip,如我的就改成test.jar
解压该文件,会得到一个classes.dex文件
把他拷贝到dex2jar-0.0.9.15文件夹下,输入dex2jar.bat classes.dex
在该目录下会生成一个classes_dex2jar.jar的,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了