您的位置:首页 > 移动开发 > Android开发

Android APK 反编译图文详解

2014-04-09 19:03 211 查看
Android APK 反编译图文详解

写在前面:

               折腾了不久,算是了解了Android Apk的反编译过程,网上有很多关于反编译的教程,但怎么说好呢,作为学习Android开发路上的小白,其实还蛮纠结要不要记录下来免得日后脑健忘。。。毕竟感觉这些收藏个教程链接就好了,哎,人就是个百分百的矛盾体啊!
               Android Apk反编译的流程一般分为两大步骤,一是通过反编译Apk得到程序的图片、xml配置、语言资源等文件,二是通过反编译Apk得到java源代码,本文将以test.apk为例进行相关的操作。

一、反编译Apk得到程序的图片、xml配置、语言资源:

             
需要工具:

             apktool:将apk文件反编译成原始的目录文件。
                          下载地址:http://code.google.com/p/android-apktool/downloads/list
                          该链接有两个包要下载,分别是:apktool1.5.2.tar.bz2 和 apktool-install-windows-r05-ibot.tar.bz2
          
              操作步骤:
             其实test.apk文件也是一个zip文件,我们可以将test.apk更改为test.zip,然后以压缩包的形式解压,但这样解压后的AndroidManifest.xml因为是经过加密的文件,所以解压后打开的AndroidManifest文件将会是乱码,如下图所示:
              


        
              但如果使用apktool工具来打开AndroidManifest.xml文件将显示非加密的内容,这也是为什么要使用apktool工具来打开test.apk而不是使用解压缩的方式打开test.apk的原因。

               1、将下载的两个包解压到同一个文件夹下,应该会有aapt.exe、apktool.bat、apktool.jar三个文件。
               2、打开windows命令行并定位到apktool.bat所在文件夹下,执行命令:apktool  d  [apk文件],如下图所示:
               


              3、执行完上述命令后,将会在apktool.bat所在的文件夹下生成一个test.apk文件的test文件夹,如下所示:
              


              test文件夹下有该apk的各种图片、xml配置等资源,此时再次打开AndroidManifest.xml文件,就不再是乱码了,如下图所示:
              


              

二、反编译Apk得到java源代码:

             
需要工具

               dex2jar:将dex文件转化成一个jar文件。下载地址:http://code.google.com/p/dex2jar/downloads/list
               JD-GUI:是一个反编译工具,将jar转换成.java的源代码。下载地址:http://jd.benow.ca/

             
操作步骤

              1、首先将需要要反编译的*.apk文件后缀名修改为*.zip,用解压工具解压,得到其中的classes.dex文件(该文件就是java文件经过编译再通过dx工具打包而成的),如下图所示。
              


              2、解压下载的dex2jar-0.0.9.15.zip文件,将classes.dex文件复制到dex2jar.bat文件夹下,打开windows命令行并定位到dex2jar.bat所在目录下,运行命令:dex2jar.bat  classes.dex,如下图所示。
             


             运行完命令后dex2jar.bat所在文件目录会生成一个classes_dex2jar.jar文件,如下所示:
             


             
             3、解压下载的jd-gui-0.3.6.windows.zip文件,运行jd-gui.exe,然后打开刚才生成的classes_dex2jar.jar文件即可看到java源代码了,如下所示:
              


           通过以上两大步骤基本算是大功告成了,写起来还真是费神费力~嗯,不过有些Apk反编译出来的java源代码看起来甚是晦涩难懂,是因为某些开发者不想被别人反编译而使用了一些保护手段。
         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息