Android Studio逆向分析APK(Analyze APK)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010356768/article/details/90044279

说明

通过Analyze APK这个功能,我们能够直观地看到APK的组成。你能够实现:

  • 查看APK中文件的绝对大小和相对大小(相对大小指的是该文件占整个APK大小的百分比)
  • 理解DEX文件的组成(能看到DEX文件中包含了哪些类)
  • 快速查看APK中文件的最终版本(比如AndroidManifest.xml)(AndroidManifest.xml、resources.arsc本来是二进制形式显示的,APK Analyzer能够解析并显示这些文件的内容)
  • 对比两个APK(新版APK和旧版APK之间文件大小的差异)

使用方法

1、Build-Analyze APK
在这里插入图片描述
2、选择一个apk即可

内容说明

APK就是一个zip包。APK Analyzer显示每个文件或目录作为一个实体,实体的层级说明了APK文件的结构
在这里插入图片描述

查看文件和大小信息

APK size是apk包的大小,download size是apk在Google Play上下载的apk包的大小(一个高度压缩的版本的文件)

通过查看各个目录或文件的大小,我们能发现APK中哪个区域的文件太大了,比如如果dex太大,我们是不是引入了重复功能的第三方库(比如Glide和Fresco),或者抽取出一个精简的第三方库(精简ffmpeg库);如果res目录太大,我们可以看看哪些图片过大了,需要通过tinypng压缩,或者用webp代替

查看AndroidManifest.xml

如果项目中包含了多个AndroidManifest.xml或者包含提供manifest文件的library,在APK中他们将被合并为一个manifest文件。在APK中manifest文件是普通的二进制文件,但是在APK Analyzer中查看manifest文件,该文件是以XML形式显示的。这种显示形式让我们能理解应用中的任何变化。比如,你能看到library中的AndroidManifest.xml是怎么合入最后的AndroidManifest.xml的

查看代码和资源实体

不同的构建任务会改变APK文件最后的实体。比如混淆压缩规则能改变你最后的代码和图片资源。在APK Analyzer中能够快速查看文件的最终版本:点击实体,就能在下面看到文件的内容,包含文字和图片实体的预览
在这里插入图片描述

APK Analyzer也能展示文本或二进制文件。比如点击resources.arsc能够让你看到针对配置特定的值(例如一个字符串资源的特定语言的翻译)。你能看到每个字符串资源的翻译,里面的文件的id值都是数值,它的内容就相当于是一个资源索引表

在这里插入图片描述

查看DEX文件

dex是Java源码编译生成的字节码文件,可以查看项目里面包含的所有类,可以查看每个类里面包含的方法,当然,混淆过的就查看不了了,只会显示方法名

我们能看到类、包、总的引用和声明个数,这些信息能够帮助我们决定是否使用multi-dex或者移除依赖使得满足64K方法数限制

在这里插入图片描述
可以看到这个dex文件定义了315个类2270种方法,并引用3946种方法

META-INF

在这里插入图片描述
这里存放的是apk的签名信息,MANIFEST.MF文件里面的内容是版本号以及对每一个文件的哈希值;CERT.SF文件里面的内容与MANIFEST.MF文件类似;CERT.RSA文件里面是apk包的签名,同时还有证书的公钥

libs

在这里插入图片描述
可以查看项目里面用到的so文件

比较apk文件

通过点击右上角的Compare with…可以选择多一个apk来比较,可以用来比较apk升级后的大小差别

猜你喜欢

转载自blog.csdn.net/u010356768/article/details/90044279