本节前言
“反编译Apk”看似很高端,其实不然,就是通过个别反编译软件对我们的APK进行反编译,然后获取程序的源代码、图片、XML资源等文件; 我不知道你以前做过这样的事吗? 看到别人的APP界面很精致,或者你喜欢别人的图片素材。 更简单,我们可以下载别人的APK,然后将后缀名改为 xxx.zip ,然后解压: 作者随意解压了一个APK:
我们可以打开res目录来获取上面的图片素材
但这些方法只能获取.png、.jpg等位图文件资源。 如果是xml资源,我们打开会发现乱码,但是如果我们想看APK程序的Java代码,也是不行的,因为它们都被打包到classes.dex文件里了! 而且反编译可以解决你的需求~另外,请不要利用反编译来做违法的事情,比如重新打包别人的APK,用自己的签名发布到相关市场……另外,我们参考了别人的代码,不是完整的副本! ! ! 记住! !
1.需要规划的三个工具 apktool:获取资源文件,提取图片文件,布局文件,以及一些XML资源文件 dex2jar:将APK反编译成Java源代码(将classes.dex转换成jar文件) jd-gui :查看转换后的jar 2中的文件,即查看Java文件。 为了方便读者,这里将三个包放在一起放在网盘中,有需要的可以下载:反编译相关的三个工具.zip2。 使用Apktool反编译APK获取图片和XML资源:
将下载的apktool解压后,我们可以看到如下文件(忽略两个csdn,一个是反编译后的apk,一个是反编译后的文件):
拿出来,双击cmd.exe,来到命令行,输入:apktool.batdcsdn.apk,然后回车:
之后就可以看到生成的csdn文件夹,里面有我们想要的资源
好的,XML 资源就在这里,对吗? 图片素材也有!
3.使用dex2jar将classes.dex转换为jar文件:
解压下载的dex2jar文件夹,将解压后的apk中的classes.dex复制到dex2jar.bat所在目录:
打开cmd,来到这个目录:输入:d2j-dex2jar.batclasses.dex
然后我们可以看到生成了一个jar包:
好的,转换完成!
4、使用jd-gui查看jar包中的Java代码:
好的,打开jd-gui文件夹
打开后,在我们的3中打开转换后的jar包,我们可以看到上面的代码:
csdn的客户端就不乱码了...也许是本着开源的精神,让我们学习一下代码吧! 通常手机端编译源码,apk发布的时候,都会进行混淆,然后进行一些加密手机端编译源码,或者使用第三方加密平台,其中“爱加密”用得比较多。 有兴趣的话还可以在百度上查看更详细的介绍!