zoukankan      html  css  js  c++  java
  • Android APK反编译(二)

    参考:APK反编译

    工具介绍

    • apktool

    作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看

    • dex2jar

    作用:将apk反编译成java源码(classes.dex转化成jar文件)

    • jd-gui

    作用:查看APK中classes.dex转化成出的jar文件,即源码文件

    工具直接搜索下载就行。

    Apk反编译流程

    为方便操作,将三个工具放在一个文件夹里,进行解压

    image

    使用apktool反编译apk得到图片、XML配置、语言资源等文件

    通过cmd进入命令行,进入到工具所在目录

    image

    接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java中,运行可执行jar包的命令是:

    java -jar jar包名.jar
    

    使用如下的命令运行apktool_2.0.1.jar反编译MMTS-release-1.0.2.apk

    java -jar apktool_2.0.1.jar d -f E:AndroidDevelopToolAndroid反编译工具包测试apkMMTS-release-1.0.2.apk -o MMTS
    

    这个命令是启动apktool_2.0.1.jar将位于【E:AndroidDevelopToolAndroid反编译工具包测试apk】目录下的"MMTS-release-1.0.2.apk"这个apk反编译,然后将反编译生成的文件存放到当前目录(apktool_2.0.1.jar所在的目录,也就是"E:AndroidDevelopToolAndroid反编译工具包"目录)下的一个【MMTS】文件夹中。这个文件夹的名字是可以随便取的,喜欢叫啥都行。

    执行反编译操作:

    image

    反编译成功后,会在当前目录(E:AndroidDevelopToolAndroid反编译工具包)下生成一个MMTS文件夹,打开MMTS里面就有反编译后生成的文件,如下图所示:

    image

    打开MMTS文件夹,就可以看到反编译后的生成的文件,

    生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了.

    想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。

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

    将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内。

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

    image

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

    image

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

    image

    使用jd-gui打开classes-dex2jar.jar就可以看到源代码了,如下图所示:

    image

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

    image

  • 相关阅读:
    收藏的博客
    MVC 之 System.Web.Optimization找不到引用
    SQL Server 之 附加数据库出现“ 拒绝访问 ”
    Android Studio 之 环境搭建
    PD 之 连接数据库并导出数据及生成PDM文件
    Windows 之 可以Ping通服务器但无法使用服务器连接的共享打印机
    JQuery 之 在数据加载完成后才自动执行函数
    JavaScript 之 动态加载JS代码或JS文件
    JQuery 之 动态加载JS或JS文件
    JavaScript 之 解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码
  • 原文地址:https://www.cnblogs.com/xl-phoenix/p/9789222.html
Copyright © 2011-2022 走看看