Dex文件结构
| 文件头 | header |
| 索引区 | string_ids type_ids proto_ids field_ids method_ids |
| 数据区 | class_defs data link_data |
一、头部信息Header结构
头部信息除了dex文件的文件信息外,还有文件里其他区域的索引。
| 字段名 | 含义 | 长度 |
|---|---|---|
| magic | dex文件魔数 | 8B 固定格式:dex\n035\0,035是dex文件格式版本号 |
| checksum | 文件校验码 ,使用alder32算法校验文件除去 maigc,checksum 外余下的所有文件区域 ,用于检查文件错误 |
4B |
| signature | SHA-1算法出去magic,checksum,signature外余下的所有文件区域,用于唯一标识本文件 | 4B |
| fileSize | Dex 文件的大小 | 4B |
| headerSize | header 区域的大小,一般固定为0x70常量 | 4B |
| endianTag | 大小端标签 ,标准.dex文件格式为小端 |
4B 固定为0x12345678 |
| linkSize | 链接数据的大小 | 4B |
| linkOff | 链接数据的偏移 | 4B |
| mapOff | map item的偏移地址, |

本文详细探讨了Android Apk中的classes.dex文件结构,从Header信息到类定义数据结构,涵盖了string_ids、type_ids、proto_ids、field_ids、method_ids等关键部分,深入解析了class_defs数据结构,包括class_data_item、encoded_field、encoded_method和code_item等组件,为理解Android应用的编译和运行提供了基础。
最低0.47元/天 解锁文章
3755

被折叠的 条评论
为什么被折叠?



