如何反编译Android APK?这可能是最有效的方法

初识:

我们都知道APK是Android应用的后缀,即AndroidPackage,我们通过Android Sdk将我们的工程编译成一个可在手机上执行的安装包,其实就是一个压缩文件(.zip),通过unzip可以解压。


而每个Android应用在手机上的执行其实是通过分配一个Dalvik虚拟机来执行的,Dalvik虚拟机的可执行文件是.dex文件,那么这个.dex文件怎么生成的呢?首先我们的代码会通过Java编译器生成.class文件,(这个我相信学过Java的同学都清楚)然后.class文件又通过Android Sdk工具转换成Dalvik虚拟机可执行的.dex文件。

清楚了这个基本的概念之后,你应该知道反编译的基本流程了吧?对,就是将这个过程的逆向化。

APK解压之后的目录如下:如何反编译Android APK?这可能是最有效的方法_第1张图片

首先,将我们待反编译的APK文件逆向生成classes.dex+res文件夹+AndroidManifest.xml 这三个东西,想必大家已经懂得了其中的内涵,没错,这就是我们的项目根目录,而dex即就是由jar打包而成的Android可执行文件。

接下来将上步中生成的classes.dex(即就是android下的可执行文件,由一簇一簇的.class文件jar包生成)通过相应的工具生成.jar包。我们到时候所看见的源码,其实就是运行.jar包所看见的源码。


接下来,就开始进行实战练习了。网上各大论坛的方法层出不穷,我亲身测试过后发现有的方法并不好使,我这里介绍一个简单有效的工具-----Jadx(一款反编译工具)。我这里就介绍Mac下的方法,Windows原理一样。在命令行里切换到你个人目录下,新建一个文件夹: mkdir jadx,然后git clone https://github.com/skylot/jadx.git,cd jadx,接下来执行./gradlew dist #(然后等着就行,没连VPN速度可能会有点慢!)

这时在jadx文件夹下会多出一个build文件,里面的目录中会有jadx.gui文件,

如何反编译Android APK?这可能是最有效的方法_第2张图片

双击这个jadx.gui文件,会出现如下窗口:如何反编译Android APK?这可能是最有效的方法_第3张图片

会出现这个窗口,选择你想反编译的APK,接下来就可以看见对应的源代码。

你可能感兴趣的:(android,从入门到放弃)