Android APK 反编译图文详解

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源代码看起来甚是晦涩难懂,是因为某些开发者不想被别人反编译而使用了一些保护手段。
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值