Android的APK反编译技术

来源:互联网 发布:数据库开发教育 编辑:程序博客网 时间:2024/05/16 14:41

        Android的APK反编译主要由反编译源码以及反编译资源两部分,第一种方法用来学习别人优秀的代码,第二种方法可以反编译做汉化或其它一些有用的用途(这个你懂的)。        想要反编译,那相应的工具包是免不了的,这里提供了一个最新版的打包下载地址:


源码反编译工具包下载:http://download.csdn.net/detail/kyoky_xxj/5632955

资源反编译工具包下载:http://download.csdn.net/detail/kyoky_xxj/5633061


一、先来看看反编译源码的方法,耐心花5分钟时间看看并实际操作一下,你会发现原来反编译是如此的简单。

        1. 下载上面的大包工具并加压,将解压后获得几个压缩包再次解压(都是绿色软件,无需安装)。

         2.将需要反编译的APK包文件后缀名改为zip,然后使用解压工具解压APK包并找到里面的classes.dex文件,这是JAVA编译成生成的字节码文件。在上面解压后的目录中找到dex2jar-0.0.9.15文件,将classes.dex文件拷贝到此文件夹下。

         3.运行命令行工具,并将路径定位到dex2jar-0.0.9.15目录,然后运行指令: dex2jar classes.dex   等待命令执行完成,在此目录下会生成一个classes.dex.dex2jar.jar文件。

         4.在上面解压好的工具包里找到jd-gui.exe执行文件并运行,使用open打开上面生成的classes.dex.dex2jar.jar文件,就可以看到具体的源码文件了。

PS:正所谓魔高一尺,道高一丈。既然智慧的人类想出了反编译,那么开发者是不是就完全无视容忍他们肆意查看自己源代码呢,答案当然是不可能的,针对这个问题,google官方在SDK2.3以后发布了proguard来守卫开发者的源码,当然不管如何它也只能起到混淆视听的作用,源码的结构还是无法改变的,如果您遇到这样的APK,反编译后就会发现里面充斥着a,b,c,d等等变量,不错,这就是混淆了。如果您有足够的耐心和毅力也可以破解这些变量并赋上正确的值。

     

二、下面再来看看最实用的反编译工具:资源反编译工具。

         资源反编译跟源码反编译一样,也是非常得简单,下面来分步讲解一下:

         1. 第一步肯定也是将工具包里面的压缩文件都解压出来。

         2.将解压后的apktool.jar文件复制到apktool-install-windows...目录下。

         3.打开命令行工具,然后定位到上面的apktool-install-windows...目录下,运行如下指令: apktool d xxx.apk  yyy   (指令解释:其中xxx.apk表示您需要反编译的APK文件绝对路径, yyy表示您希望反编译后的文件保存的文件夹绝对路径)。 当然反编译可以使用的参数还有几种,可以运行apktool查看输出的帮助文档。

         4.打开上面反编译成功生成的文件夹目录,是不是很熟悉,所有资源文件完全按照Android文件夹结构放置,找到需要修改的地方修改替换即可。至于替换什么我就不说了,大家都懂的。

         5.修改替换成功以后,运行如下指令再次打包生成APK文件即可成为一个全新的应用了。指令如下: apktool b yyy (指令解释:延续上面的,yyy就是上面生成的文件夹绝对路径了)。到yyy\dist目录下找到新生成的APK文件,不过这个APK文件是没有签名的。


        上面就是Android反编译的一些简单技巧,是不是很简单。

          

原创粉丝点击