Dex

251 阅读1分钟

格式简介

header

 类型header_item  
struct header_item{  
    public ubyte[] magic=new ubyte[8];
    public uint checksum;
    public ubyte[] signature =new ubyte[20];
    public uint file_size;
    public uint header_size;
    public uint endian_tag;
    public uint link_size;
    public uint link_off;
    public uint map_off;
    public uint string_ids_size;
    public uint string_ids_off;
    public uint type_ids_size;
    public uint type_ids_off;
    public uint proto_ids_size;
    public uint proto_ids_off;
    public uint field_ids_size;
    public uint field_ids_off;
    public uint method_ids_size;
    public uint method_ids_off;
    public uint class_ids_size;
    public uint class_ids_off;
    public uint data_size;
    public uint data_off;
}

magic 必须取值为dex\n035\0
checksum 文件内容的校验
signature 检验文件是否被篡改
file_size 文件的长度,包含所有内容
header_size 默认0x70
endian_tag 按照什么字节型来处理 小端为12345678 大端为78563212

string_ids 类型string_ids 存储和字符串的信息 type_ids 类型type_ids_item 存储相关的信息 proto_ids
field_ids 类型field_ids_item 存储变量信息包括变量名 类型
method_ids 存储成员函数信息包括函数名,参数和返回值类型
class_defs class_def_item 数组,元素类型为数组
data dex文件重要的数据类型都存在data区域内,会通过xx_off的位置进行扩展 link_data