dex文件结构分析-3
来源:互联网 发布:国家进出口数据 编辑:程序博客网 时间:2024/06/06 02:40
转载请标明出处:
http://www.dusherry.com/?id=6;
按书上说的Dalvik虚拟机解析dex文件的内容,最终将其映射成DexMapList数据 结构,DexHeader的mapOff字段指明了DexMapList结构在dex文件中的偏移。
按刚给的例子,它的偏移值为0x33adc。
结构体申明如下:
Struct DexMapList{
u4 Size; //DexMapItem的个数
DexMapItem list[1];
}
Struct DexMapItem{
u2 type; //KDexType开头的类型
u2 unused; //未使用,主要用于字节对齐
u4 size; //指定类型的个数
u4 offset; //指定类型文件的偏移
}
其中type字段是一个枚举常量,通过名称很容易判断它的具体类型。
enum{
KDexTypeHeaderItem
=0x0000,
KDexTypeStringItem
=0x0001,
KDexTypeTypeIdItem
=0x0002,
KDexTypeProtoIdItem
=0x0003,
KDexTypeFieldIdItem
=0x0004,
KDexTypemMethodIdItem
=0x0005,
KDexTypeClassDefItem
=0x0006,
KDexTypeMapList
=0x1000,
KDexTypeTypeList
=0x1001,
KDexTypeAnnotationSetRefList
=0x1002,
KDexTypeAnnotationSetItem
=0x1003,
KDexTypeClassDataItem
=0x2000,
KDexTypeCodeItem
=0x2001,
KDexTypeStringDataItem
=0x2002,
KDexTypeDebugInfoItem
=0x2003,
KDexTypeAnnotationItem
=0x2004,
KDexTypeEncodedArrayItem
=0x2005,
KDexTypeAnnotationDirectoryItem
=0x2006,
}
对比DexHeader部分,KDexTypeHeaderItem描述了整个DexHeader结构,而接下来的KDexTypeStringItem到KDexTypeClassDefItem与Dexheader当中对应的类型类型个数和文件偏移是相同的。
0x33acc为DexMapList的起始地址。根据定义的数据结构可以发现kDexTypeHeaderItem为0的文件偏移为0,也就是DexHeader头的文件偏移为0.
- dex文件结构分析-3
- Dex文件结构分析-1
- dex文件结构分析-2
- dex文件结构分析-4
- dex文件结构分析-5
- Android Dex文件结构
- Dex文件结构
- Dex文件结构
- Dex文件结构
- Android Dex文件结构
- Dex文件结构
- 转:dex文件结构
- dex 文件结构
- Dex文件结构
- Dex文件结构
- DEX文件结构
- dex文件结构
- dex文件结构
- springMVC --配置详细与注解说明
- mimeType形式大全
- Node.js 使用 child_process 实现多进程
- mysql 递归查询的方法
- oc中的文件和目录相关操作
- dex文件结构分析-3
- linux查看用户命令
- 安装xmind出错:没有JRE
- LeetCode223——Rectangle Area
- 传入时间与现在时间的差距及其表示
- android事件传递机制的浅谈
- 高效学习有方法--自己的感悟
- Snail—UI学习之表视图TableView多行删除
- linux更换硬盘后的网络设置