APK反编译

概念

由于Google Android平台选择了Java Dalvik VM的方式,使其程序很容易破解和被修改。反编译是破解的途径之一,通过反编译,可以推导出他人APP产品的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。这也给一些不法分子以可乘之机。他们对流行的APP进行反编译后,窃取正版开发者的创意或算法,再重新生成新的APP,严重侵害了正版开发者的权益。

一. 工具介绍

  • apktool (资源文件获取)

    1. 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
    2. apktool下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads
  • dex2jar(源码文件获取)

    1. 作用:将apk反编译成java源码(classes.dex转化成jar文件)
    2. dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/
  • jd-gui (源码查看)

    1. 作用:查看APK中classes.dex转化成出的jar文件,即源码文件
    2. jd-gui下载地址:http://jd.benow.ca/

二. Apk反编译流程

    • 为了方便进行反编译,我们将上述下载好的3个工具统一放到一个文件夹中
      下载后的文件夹
  • 然后将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹
    解压到当前文件夹
  1. 使用apktool反编译apk得到图片、XML配置、语言资源等文件

三. 使用dex2jar反编译apk得到Java源代码

  1. 将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的)

    后缀名改为.rar或者 .zip,得到其中的classes.dex文件

  2. 将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内

    将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内

  3. 在命令行下定位到dex2jar.bat所在目录,输入"d2j-dex2jar classes.dex",

    在命令行下定位到dex2jar.bat所在目录,输入"d2j-dex2jar classes.dex"

    我的文件夹

  4. 命令执行完成之后,在当前目录下就可以看到生成的Jar文件了

    命令执行完成之后,在当前目录下就可以看到生成的Jar文件了

  5. 反编译classes.dex得到classes-dex2jar.jar文件之后,就可以使用【jd-gui】工具将class文件反编译成java源代码了

    反编译classes.dex得到classes-dex2jar.jar文件之后,就可以使用【jd-gui】工具将class文件反编译成java源代码了

  6. 使用jd-gui打开classes-dex2jar.jar就可以看到源代码了

    使用jd-gui打开classes-dex2jar.jar就可以看到源代码了

    注意:JD-GUI虽然可以将class反编译成java源代码,但是对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):
    被混淆过的class反编译后的效果图

你可能感兴趣的:(APK反编译)