smile908

导航

使用工具反编译APK获取代码和资源

概述

           "反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压: 笔者随便在网络上下载了一个apk软件包,将apk后缀改成zip压缩包,然后解压。

 

 

 

 

 

        我们可以打开res目录,获取里面的图片素材。但是,这种方法,获得的只会是一些.png,或者.jpg这样的位图文件资源,如果是xml类的资源,打开我们会发现是乱码,并且假如我们想看APK程序的Java代码,也是行不通的,因为他们都打被打包到classes.dex文件中! 但是反编译可以解决你的需要~另外,切勿拿反编译来做违法的事,比如把人家的APK重新打包后使用自己的签名然后发布到相关市场...另外,我们是参考别人的代码,而不是完全拷贝!!!切记!!

 

        在进行反编译之前,我们需要做以下准备,准备三个工具,三个工具的具体用途如下图所示。,

  1. apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件
  2. dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)
  3. jd-gui:查看2中转换后的jar文件,即查看Java文件 。

     

        为了方便各位读者,笔者为此准备了以下下载链接:

        https://ibotpeaches.github.io/Apktool/           apktool.jar
        https://sourceforge.net/projects/dex2jar/       dex2jar
        http://java-decompiler.github.io                      jd-gui
        https://blog.csdn.net/n_fly/article/details/109063501          jd_gui.bat (这个文件直接复制代码,修改名称和后缀就可)


我们创建一个新的文件夹,将这几个工具以及XX.apk文件放在一个文件夹类,如下图所示。

 

 

我们首先开始第一步,使用apktool.bat文件将apk文件里面的rec文件反编译,里面有我们想要的资源。

在该文件夹上按住shift加鼠标右键进入该目录的powershell窗口,输入以下命令,成功运行后会在该目录下产生一个新的文件夹,该文件夹里面有我们想要的静态资源和没有乱码的xml文件,如下图所示。

 

点击enter后,如下图所示, 这个时候rec里面的静态资源我们就可以查看了,这个时候xml文件也不是乱码的状态。

 

 

 

 

 

 

 

 

 

 这个时候,我们的反编译已经完成了一半了,接下来我们将借助剩下的两个工具,完成Java源码的反编译。

 

使用dex2jar将classes.dex转换成jar文件:

把下载好的dex2jar文件夹解压,apk解压后中的classes.dex复制到dex2jar.bat所在的目录下,我们将在该目录下建立一个新的文件夹,将6个dex文件放入该文件夹下,如下图所示。

 

 还是如此,我们在dex2jar这个目录下,按住shift加鼠标右键,进入该目录下的powershell页面。

 

 接下来,我们继续刚刚的操作,将剩下的五个dex文件分别反编译成jar文件,并移动到刚刚新建的文件中。

 

 

现在我们的反编译工作已经全部结束了。dex文件反编译的jar文件用Notepad软件查看源码一样会乱码,这个时候我们借助我们的最后一个工具jd_gui这个工具查看我们的jar包的java源码,这个工具使用起来就非常简单了,只要双击就可以了。

 

 

 

 

 

 

        csdn的客户端竟然不混淆代码...可能是本着开源的精神吧,给我们学习代码吧!一般的话,apk发布都会进行混淆,然后进行一些加密,或者使用第三方的加密平台,用的比较多的"爱加密",有兴趣的也自行百度查看更加详细的介绍!

   

posted on 2022-07-05 11:48  smile908  阅读(1834)  评论(2编辑  收藏  举报