dex结构
2020-09-09 14:59:34 2 举报
AI智能生成
dex结构
作者其他创作
大纲/内容
u1 magic[8]; dex版本标识
u4 checksum; adler32检验
u4 fileSize; 整个文件大小
u4 headerSize; DexHeader
结构大小
结构大小
u1 signature[kSHA1DigestLen]; <br>SHA-1哈希值
u4 typeIdsSize; DexTypeId的个数
u4 protoIdsSize; DexProtoId的个数
u4 fieldIdsSize; DexFieldId的个数
u4 endianTag; 字节序标记
u4 linkSize; 连接段大小
u4 classDefsSize; DexClassDef的个数
u4 stringIdsSize; DexStringId的个数
u4 dataSize; 数据段的大小
u4 mapOff; DexMapList的文件偏移
u4 linkOff; 连接段偏移,off都是偏移
u4 stringIdsOff;
加上基址,得到一个DexStringId的列表起始地址
u4 stringDataOff
+基址得到一个mutf-8的字符串
DexStringId[0]
DexStringId[...]
DexStringId[n]
DexStringId[...]
DexStringId[n]
u4 typeIdsOff;
+baseaddr得到
DexTypeId(类型结构体)
列表起始地址
DexTypeId(类型结构体)
列表起始地址
u4 descriptorIdx;
指向DexStringid列表索引(n)
DexTypeId[0]
DexTypeId[...]
DexTypeId[n]
DexTypeId[...]
DexTypeId[n]
u4 protoIdsOff;
+baseaddr得到
DexProtoId方法声明结构体
DexProtoId方法声明结构体
u4 shortyIdx;
指向DexStringId列表索引
u4 returnTypeIdx;
指向DexTypeId列表的索引
u4 parametersOff;
指向DexTypeList的偏移
DexTypeList
u4 size; DexTypeItem的个数
DexTypeItem list[1];
DexTypeItem 列表起始地址
DexTypeItem 列表起始地址
u2 typeIdx; 指向
DexTypeId列表的索引
DexTypeId列表的索引
DexProtoId[0]
DexProtoId[...]
DexProtoId[n]
DexProtoId[...]
DexProtoId[n]
u4 fieldIdsOff;
+baseaddr DexFieldId 字
段结构体,列表分布同上,
后面类似,不再说明
段结构体,列表分布同上,
后面类似,不再说明
u2 classIdx;
类的类型,指向DexTypeId列
表的索引
表的索引
u2 typeIdx;
字段的类型,指向DexTypeId
列表的索引
列表的索引
u4 nameIdx;
字段名,指向DexStringId
列表的索引
列表的索引
u4 methodIdOff;
DexMethodId方法结构
体,列表分布同上
体,列表分布同上
u2 classIdx;
类的类型,指向DexTypeId列
表的索引
表的索引
u2 ProtoIdx;
声明类型,指向
DexProtoId列表的索引
DexProtoId列表的索引
u4 nameIdx;
方法名,指向DexStringId
列表的索引
列表的索引
u4 classDefsOff;
DexClassDef 类结构体,
列表分布同上
列表分布同上
u4 classIdx;
类的类型,指向DexTypeId
列表索引
列表索引
u4 accessFlags;
访问标识
u4 superclassIdx;
父类类型,指向DexTypeId
的偏移
的偏移
u4 interfacesOff;
接口,指向DexTypeList的
偏移
偏移
u4 SourceFileIdx;
源文件名,指向
DexStringId列表的索引
DexStringId列表的索引
u4 annotationsOff;
注解,指向
DexAnnotationDirectoryItem
的结构
DexAnnotationDirectoryItem
的结构
u4 classDataOff;
指向DexClassData结构
的偏移
的偏移
DexClassData
DexClassDataHeader header; 指
定字段与方法的个数
定字段与方法的个数
DexClassDataHeader
u4 staticFieldsSize; 静
态字段个数
态字段个数
u4 instanceFieldsSize; 实
例字段个数
例字段个数
u4 directMethodsSize; 直
接方法的个数
接方法的个数
u4 virtualMethodsSize;
虚方法的个数
虚方法的个数
DexField*staticFields;
静态字段DexFieId结构
静态字段DexFieId结构
Dexfield
u4 fieldIdx; 指向
DexFieldId的索引
DexFieldId的索引
u4 accessFlags; 访问
标识
标识
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
0x00000020
0x00000040
0x00000040
0x00000080
0x00000080
0x00000100
0x00000200
0x00000400
0x00000800
0x00001000
0x00002000
0x00004000
0x00010000
0x00020000
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
0x00000020
0x00000040
0x00000040
0x00000080
0x00000080
0x00000100
0x00000200
0x00000400
0x00000800
0x00001000
0x00002000
0x00004000
0x00010000
0x00020000
"public",
"private",
"protected",
"static",
"final",
"syncchronized",
"super",
"volatile",
"bridge",
"transient",
"varargs",
"native",
"interface",
"abstract",
"strict",
"synthetic",
"annotation",
"enum",
"constructor",
"declared_synchronized",
"private",
"protected",
"static",
"final",
"syncchronized",
"super",
"volatile",
"bridge",
"transient",
"varargs",
"native",
"interface",
"abstract",
"strict",
"synthetic",
"annotation",
"enum",
"constructor",
"declared_synchronized",
DexField* instanceFields; 实
例字段DexField结构
例字段DexField结构
DexMethod* directMethods; 直
接方法 DexMethod结构
接方法 DexMethod结构
DexMethod
u4 methodIdx; 指向
DexMethodId的索引
DexMethodId的索引
u4 accessFalgs; 访问
标识
标识
u4 codeOff; 指向
DexCode结构的偏移
DexCode结构的偏移
DexCode
u2 registersSize; 使用
寄存器的个数
寄存器的个数
u2 inSize; 参数个数
u2 outsSize; 调用其
他方法时使用的寄存器个数
他方法时使用的寄存器个数
u2 triesSize; tryCatch个数
u4 debugInfoOff; 指向
调试信息的偏移
调试信息的偏移
u4 InsnsSize; 指令
集个数以2字节为单位
集个数以2字节为单位
u2 Insns[1]; 指令集
DexMethod* virtualMethods; 虚
方法 DexMethod结构
方法 DexMethod结构
u4 staticValuesOff;
指向DexEncodedArry结
构的偏移,类中静态数据
构的偏移,类中静态数据
0 条评论
下一页