顶象App加固技术解析:DEX文件格式的详解

栏目: IOS · Android · 发布时间: 5年前

内容简介:Android应用的源代码主要分为java与C/C++两部分,其中java编译后的文件是DEX文件,也是Android Dalvik虚拟机运行的程序,因此也是基于Android平台的虚机应用很难绕过的一种文件格式,重要性不言而喻。在顶象技术的 Android 加固解决方案中,有着DEX 壳保护、指令虚拟化(将DEX文件运行在自实现的虚拟机环境下)等技术。要想了解顶象技术的Android 加固解决方案如何帮助 Android 应用对抗逆向和破解,首先需要了解DEX文件到底是什么样的。DEX文件格式

Android应用的源代码主要分为 java 与C/C++两部分,其中java编译后的文件是DEX文件,也是Android Dalvik虚拟机运行的程序,因此也是基于Android平台的虚机应用很难绕过的一种文件格式,重要性不言而喻。

顶象App加固技术解析:DEX文件格式的详解

在顶象技术的 Android 加固解决方案中,有着DEX 壳保护、指令虚拟化(将DEX文件运行在自实现的虚拟机环境下)等技术。要想了解顶象技术的Android 加固解决方案如何帮助 Android 应用对抗逆向和破解,首先需要了解DEX文件到底是什么样的。

文件结构展示

顶象App加固技术解析:DEX文件格式的详解

DEX文件格式

顶象App加固技术解析:DEX文件格式的详解

DEX文件在010中的表现

文件结构详解

顶象App加固技术解析:DEX文件格式的详解

结构体定义

文件头( dex_header )。

  • magic[8]:dex版本标识。这类字节必须出现在 .dex 文件的开头,以便系统将其原样识别。该值会特意包含一个换行符("\n" 或 0x0a)和空字节("\0" 或 0x00),以便协助检测某些形式的损坏问题。该值还可以将格式版本号编码为 3 个十进制数字;随着格式的演变,预计该值会单调递增。
  • checksum:可以用于文件剩余内容(除 magic 和此字段之外的所有内容)的 adler32 校验和。另外,还可以用于检测文件损坏情况。
  • signature[kSha1DigestSize]:文件剩余内容(除 magic、checksum 和此字段之外的所有内容)的 SHA-1 签名(哈希);用于对文件进行唯一标识。
  • file_size:整个文件(包括标头)的大小,以字节为单位。
  • header_size:标头(整个区段)的大小,以字节为单位。这一项允许至少一定程度的向后/向前兼容性,而不必让格式失效。
  • endian_tag:字节序标记。ENDIAN_CONSTANT ,表示小端字节序。
  • REVERSE_ENDIAN_CONSTANT 表示大端字节序,默认值为 
  • ENDIAN_CONSTANT 。
  • link_size 与 link_off :链接区段的大小与文件偏移。如果此文件未进行静态链接,则两个值都为0。
  • map_off:从文件开头到映射项列表的文件偏移量。
  • string_ids_size 与 string_ids_off:字符串标识符列表中的字符串数量与文件偏移。
  • type_ids_size 与 type_ids_off:类型标识符列表中的元素数量及文件偏移。元素数量上限为65535。
  • proto_ids_size 与 proto_ids_off:原型标识符列表中的元素数量及文件偏移。元素数量上限为65535。
  • field_ids_size 与 field_ids_off:字段标识符列表中的元素数量及文件偏移。
  • method_ids_size 与 method_ids_off:方法标识符列表中的元素数量及文件偏移。
  • class_defs_size 与 class_defs_off:类定义列表中的元素数量及文件偏移。
  • data_size 与 data_off :data区段的大小及文件偏移。

字符串标识符列表( dex_string_ids )在DEX文件以 DexStringId[] 的形式存在,其结构如下。

顶象App加固技术解析:DEX文件格式的详解

类型标识符列表( dex_type_ids )在DEX文件以 DexTypeId[] 的形式存在,其结构如下。

顶象App加固技术解析:DEX文件格式的详解

方法原型标识符列表( dex_proto_ids )在DEX文件以 DexProtoId[] 的形式存在,其中 DexProtoId 结构如下。

顶象App加固技术解析:DEX文件格式的详解

DexTypeList 结构如下。

顶象App加固技术解析:DEX文件格式的详解

字段标识符列表( dex_field_ids )在DEX文件以 DexFieldId[] 的形式存在,其中 DexFieldId 结构如下。

顶象App加固技术解析:DEX文件格式的详解

方法标识符列表( dex_method_ids ) 在DEX文件以 DexMethodId[] 的形式存在,其中 DexMethodId 结构如下。

顶象App加固技术解析:DEX文件格式的详解

类定义列列表( dex_class_defs )在DEX文件以 DexClassDef[] 的形式存在,其中 DexClassDef 结构如下。

顶象App加固技术解析:DEX文件格式的详解

映射项列表( dex_map_list ) 在DEX文件以 DexMapItem[] 的形式存在,其中 DexMapItem 结构如下。

顶象App加固技术解析:DEX文件格式的详解

类型代码表如图所示。

顶象App加固技术解析:DEX文件格式的详解

由于篇幅限制,小象将在第二篇文章中继续解析DEX文件的DexAnnotationsDirectoryItem 、 DexClassData 与 DexEncodeArray 结构,请继续关注。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

第二曲线:跨越“S型曲线”的二次增长

第二曲线:跨越“S型曲线”的二次增长

[英]查尔斯·汉迪(Charles Handy) / 苗青 / 机械工业出版社 / 2017-6 / 49.00

S型曲线是每个组织和企业在预测未来时一定会参考的工具,一切事物的发展都逃不开S型曲线(“第一曲线”)。 然而,从公司组织、企业治理、市场的变化,到个人职业发展、社会人际关系以及未来的教育与社会价值,多维度地探讨这个世界需要重新以不同的角度来思考问题,不能够总是停留在“第一曲线”的世界。 如果组织和企业能在第一曲线到达巅峰之前,找到带领企业二次腾飞的“第二曲线”,并且第二曲线必须在第一曲......一起来看看 《第二曲线:跨越“S型曲线”的二次增长》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具