美文网首页
Android开发之Apk反编译

Android开发之Apk反编译

作者: 龙马君 | 来源:发表于2016-05-05 12:35 被阅读625次

    在做Android开发中,有时候会研究下别人开发的应用采用了什么第三方库,或想知道它是怎么实现的,或者想从它那边抠资源出来等等,这就需要对apk进行反编译了。

    使用到的工具:

    1. apktool: 反编译工具,通过反编译APK中XML文件,直接可以查看。
    2. dex2jar: 将apk中的classes.dex转化成Jar文件。
    3. JD-GUI:反编译工具,可以直接查看Jar包的源代码。
    4. APK反编译工具包: 集合了apktool,直接右键即可对apk,dex进行反编译
    5. ClassyShark: 一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等.

    下载地址:

    1. dex2jar:http://code.google.com/p/innlab/downloads/lis
    2. JD-GUI:http://code.google.com/p/innlab/downloads/lis
    3. APK反编译工具包:http://code.google.com/p/innlab/downloads/lis
    4. apktool:https://bitbucket.org/iBotPeaches/apktool/downloads (目前最新的是apktool_2.1.0.jar)
    5. ClassyShark: https://github.com/google/android-classyshark (下载release包)

    我的网盘地址:
    http://pan.baidu.com/s/1qYMRl7I 密码:pg54

    反编译步骤:

    1. 解压APK包
      apk文件是一种常见的zip, 后缀重命名后即可解压。得到xml和classes.dex文件,这时候就可以获取到一些图片资源文件和assets资源了。
      解压截图:


    2. 反编译dex文件
      要查看java源码,就要对这个classes.dex进行反编译了。
      首先,先用dex2jar把dex转为普通的jar包。

    dex2jar.bat classes.dex
    

    此时会生成classes_dex2jar.jar包。

    1. 反编译jar包
      这时候就可以使用JD_GUI进行查看jar包里面的代码了,JD_GUI也可以对单个class文件反编译。


      Paste_Image.png
    2. 反编译XML文件
      当然你解压apk后,得到很多的xml文件,但是你查看你会发现是乱码,这时候你需要使用apktool。
      方法一:
      直接使用apktool进行反编译

    apktool d xxx.apk
    

    会生成xxx目录,里面res的xml文件可以正常查看。
    方法二:
    安装APK反编译工具包,然后右键进行反编译。
    (要先保证apk打开方式是apk_反编译.cmd)

    Paste_Image.png
    Paste_Image.png
    注意:反编译是出现错误
    Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
    这时候,你需要把APK反编译工具包里面的apktool.jar包使用最新的。
    修改apk_反编译.cmd
    java -jar %~dp0apktool.jar d -s "%~1"
    注意:文件的路径中最好不要出现中文!
    1. ClassyShark反编译
      打开界面
    java -jar ClassyShark.jar
    
    Paste_Image.png

    点击左上角按钮,打开文件。

    Paste_Image.png

    Methods count里面即可看到引用了哪些包,方法数。
    通过包来判断使用了哪些开源包。

    参考地址:
    http://jingyan.baidu.com/article/dca1fa6fbe140ef1a4405212.html
    https://code.google.com/archive/p/innlab/downloads
    http://www.tuicool.com/articles/EjuQfar
    http://www.2cto.com/kf/201602/488734.html
    http://ibotpeaches.github.io/Apktool/documentation/

    相关文章

      网友评论

          本文标题:Android开发之Apk反编译

          本文链接:https://www.haomeiwen.com/subject/bijdrttx.html