Android安全之DEX文件格式浅析

admin 2022年3月22日22:03:49评论62 views字数 791阅读2分38秒阅读模式


Android安全之DEX文件格式浅析

背景

Android安全之DEX文件格式浅析


在Android的每个APP中都必须包含dex文件,同时我们在做Android加固和脱壳过程中的开发和逆向分析的过程中,也必须和dex文件打交道。因此在Android安全对抗过程中dex是一个我们必须熟悉的很核心的一个知识点。

下面针对dex文件进行解析,以便为安全对抗做点基础铺垫。


Android安全之DEX文件格式浅析

Dex文件理论基础

Android安全之DEX文件格式浅析


dex文件是Anroid的虚拟机Dalik和ART运行的一种文件结构,它包含应用程序的全部操作指令以及运行时数据。

下面从两张图看.class文件和.dex文件区别

Android安全之DEX文件格式浅析

通过上图可以看到,dex文件将原来每个文件都有的共有信息合成一体,从而减少了class的冗余。

Android安全之DEX文件格式浅析

dex文件结构

Android安全之DEX文件格式浅析


Android安全之DEX文件格式浅析


通过上图可以清晰看到,dex文件主要由3大部分组成,它们分别是:文件头、索引区、数据区。其中索引区主要包括字符串、类型、方法、域、方法的索引。数据区主要包括类的定义、数据区、链路数据区


Android安全之DEX文件格式浅析


从上面我们可以看出Dex文件由许多部分组成,其中Dex Header最为重要,因为Dex的其他组成部分,都需要通过Dex Header中的索引才能找到。


Android安全之DEX文件格式浅析

Dex Header详解

Android安全之DEX文件格式浅析


dex文件头一般固定为0x70个字节大小,它包含标志、版本号、校验码、sha-1签名以及其他一些方法、类的数量和偏移地址等信息。


下图是DEX Header的解析:

Android安全之DEX文件格式浅析


Android安全之DEX文件格式浅析


结合上面的两张图进行对照,下面我们进一步详细的描述dex文件的结构

Android安全之DEX文件格式浅析

Android安全之DEX文件格式浅析


Android安全之DEX文件格式浅析

索引区详解

Android安全之DEX文件格式浅析


dex文件索引区,它包含一些字符串、类型、方法、域、方法的索引,方法可以查找到对应的数据位置

Android安全之DEX文件格式浅析

Android安全之DEX文件格式浅析


Android安全之DEX文件格式浅析

数据区详解

Android安全之DEX文件格式浅析


Dex文件的数据区,它包含类的定义区、数据区、链接数据区。

类的定义区一般存放dex文件中一些类对象的声明,数据区则存放代码原数据,链接数据区一般提供从索引区到数据区的链接映射关系。


Android安全之DEX文件格式浅析


参考借鉴:随风而行aa


欢迎各位扫码关注"哆啦安全"公众号、视频号

Android安全之DEX文件格式浅析

原文始发于微信公众号(哆啦安全):Android安全之DEX文件格式浅析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月22日22:03:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android安全之DEX文件格式浅析https://cn-sec.com/archives/835016.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息