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

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

文件结构展示

DEX文件格式

DEX文件在010中的表现

文件结构详解

结构体定义

文件头( 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[] 的形式存在,其结构如下。


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

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


DexTypeList 结构如下。

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


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

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


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

类型代码表如图所示。

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

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

  1. 视频美颜sdk是什么?技术解析与实现原理详解

    视频美颜技术的发展则为人们提供了一种美化自己的方式,因此,视频美颜技术成为了一个备受关注的领域.在这个领域中,视频美颜sdk技术则是实现高效美颜的关键因素之一.本文将从技术角度分析视频美颜sdk的实现 ...

  2. 从第一代到第五代,App加固技术详解

    App加固技术功能发展 通过这几年的发展APP加固技术,不断得到快速迭代发展,加固的强度也在不断的提升.加固技术的发展主要经历:动态加载.内存不落地加载.指令抽取.指令转换.虚拟机保护.下面就分别对这 ...

  3. 顶象App加固——助力微投证券融入IOS生态

    过去十年里,App几乎重新定义了互联网,如今所有人的智能手机里都有着无数个App. 以App store 为例.最新数据显示,当前61个国家/地区在 App Store 现存的App总数为29,085 ...

  4. APP加固技术历程及未来级别方案:虚机源码保护

    传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决.而下一代加固技术-虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强 ...

  5. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  6. wav文件格式分析详解

    wav文件格式分析详解 作者:曹京 日期:2006年7月17日 一.综述     WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的. RIFF是英文Resource Inte ...

  7. 装配图中齿轮的画法_减速器结构解析和装配图画法详解

    减速机器用于低转速大扭矩的传动设备,原理是把电动机.内燃机.马达或其它高速运转的动力,通过减速机的输入轴上齿数少的齿轮啮合输出轴上的大齿轮,从而达到减速的目的:大小齿轮的齿数之比,就是传动比.减速器是 ...

  8. 元宇宙技术普及读本重磅问世 详解十大技术 把脉数字经济 前瞻产业布局

    转自 元宇宙共识圈 王恩东.倪光南.沈昌祥.郑纬民--四位中国工程院院士联袂力荐 倪健中.姚前.李正茂.朱嘉明.肖风.敖然等权威专家一致推荐 汇聚元宇宙技术专家及产业一线佼佼者倾力撰写 元宇宙技术普及 ...

  9. 【技术综述】万字长文详解Faster RCNN源代码

    文章首发于微信公众号<有三AI> [技术综述]万字长文详解Faster RCNN源代码 作为深度学习算法工程师,如果你想提升C++水平,就去研究caffe源代码,如果你想提升python水 ...

最新文章

  1. c语言使能,什么是锁存使能输入
  2. iOS 图片处理-利用GPUImage 磨皮和美白图片
  3. 前端开发学习笔记(二)
  4. Qt修炼手册11_多线程编程和QThread类
  5. JDBC基础知识复习
  6. 画验证曲线_数学老师用“函数曲线”绘出美图 学生舍不得擦
  7. 中国第一个发《Nature》的竟然是清朝人!被皇帝夸天下第一,他却觉得羞耻..........
  8. html溢出左右滚动,html-选项卡溢出时水平滚动
  9. 为什么Python不支持 i ++ 语法
  10. 循序渐进 OSPF的详细剖析(四)
  11. linux命令:watch 、lsmod、mdadm 创建软RAID
  12. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八
  13. 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例
  14. wps使用mathtype编辑数学公式
  15. 基于OpenCv的人脸识别(Python完整代码)
  16. 书摘:刘润《5分钟商学院》之“结果偏见”
  17. 任务栏-IDEA图标变白色
  18. Windowed reading and writing
  19. 从0开始建设saas - 系统对接中的问题整理
  20. 恰当的活法――有感于《杜拉拉升职记》

热门文章

  1. 【STM32+OLED屏显应用实例】
  2. 洛谷:P1536 村村通
  3. DDD领域设计架构落地
  4. 操作系统原理_好书推荐现代操作系统:原理与实现文末有福利
  5. IntelliSense: const char * 类型的实参与 LPCWSTR 类型的形参不兼容
  6. 三种算法求解经典N皇后问题
  7. Xposed Java反射大法
  8. python爬取邮件内容_python 接收邮件获取邮件内容
  9. 体制内拒绝当“烂好人”的实用方法
  10. 硬件工程师日常必备软件推荐