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反编译的一些简单技巧,是不是很简单。

更多相关文章

  1. Eclipse下载Github用Android(安卓)Studio编辑的Android源码
  2. Android(安卓)Studio | 报错处理 | ERROR: Could not find com.a
  3. Android(安卓)源码 图形系统概述
  4. Android(安卓)ProGuard代码混淆
  5. Android:资源 id 及使用getIdentifier()获取资源Id
  6. Android(安卓)OTA 升级之四:进入根文件系统
  7. Android(安卓)Wear Eclipse开发环境搭建
  8. android studio 删除、导入jar包
  9. [Android]res下面layout增加子文件夹

随机推荐

  1. 一个android访问http资源的便捷工具类―
  2. android 应用程序自适应屏幕大小
  3. Android 访问网络连接设置界面
  4. android 使内容铺满全屏
  5. 3.Retrofit上传头像给后端
  6. 实现类似Android联系人搜索功能
  7. android沉浸式状态栏实现,android沉浸式状
  8. android hander 线程用法
  9. gradle clean报错Could not find manifes
  10. android HandlerThread使用小例