dex文件结构
Posted YYPapa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dex文件结构相关的知识,希望对你有一定的参考价值。
0x00013f80 | 64 65 78 0A <--- 0x00013f90 | 30 33 35 00 EE 46 38 DD 46 FF 89 0D BE CA CD BD 0x00013fa0 | 63 CB 13 87 01 1C DC 87 53 DB 34 35 D8 2C 2C 00 0x00013fb0 | 70 00 00 00 78 56 34 12 00 00 00 00 00 00 00 00 0x00013fc0 | 08 2C 2C 00 5F 5C 00 00 70 00 00 00 E9 08 00 00 Header 0x00013fd0 | EC 71 01 00 16 11 00 00 90 95 01 00 6E 1F 00 00 0x00013fe0 | 98 62 02 00 26 55 00 00 08 5E 03 00 56 08 00 00 0x00013ff0 | 38 07 06 00 E0 1A 25 00 F8 11 07 00 AE 80 1C 00 -----------><--- 0x00014000 | B0 80 1C 00 B4 80 1C 00 B7 80 1C 00 BE 80 1C 00 0x00014010 | C4 80 1C 00 CB 80 1C 00 D9 80 1C 00 F0 80 1C 00 ... StringIds 0x0002b140 | CE 3D 23 00 DD 3D 23 00 EA 3D 23 00 FA 3D 23 00 0x0002b150 | 02 3E 23 00 05 3E 23 00 09 3E 23 00 1E 3E 23 00 0x0002b160 | 34 3E 23 00 38 3E 23 00 48 3E 23 00 4B 3E 23 00 0x0002b170 | 4E 3E 23 00 53 3E 23 00 2C 06 00 00 F1 06 00 00 -------><------- 0x0002b180 | EE 08 00 00 DD 0B 00 00 96 0D 00 00 5C 0F 00 00 0x0002b190 | E3 10 00 00 E4 10 00 00 E5 10 00 00 E6 10 00 00 0x0002b1a0 | E7 10 00 00 E8 10 00 00 E9 10 00 00 EA 10 00 00 TypeIds ... 0x0002d500 | 89 29 00 00 8A 29 00 00 8B 29 00 00 8C 29 00 00 0x0002d510 | 8D 29 00 00 8E 29 00 00 8F 29 00 00 2C 06 00 00 -----------><--- 0x0002d520 | 00 00 00 00 00 00 00 00 3A 06 00 00 00 00 00 00 0x0002d530 | B8 2B 1C 00 3E 06 00 00 00 00 00 00 C0 2B 1C 00 0x0002d540 | 4D 06 00 00 00 00 00 00 C8 2B 1C 00 4E 06 00 00 0x0002d550 | 00 00 00 00 D0 2B 1C 00 50 06 00 00 00 00 00 00 ProtoIds 0x0002d560 | D8 2B 1C 00 57 06 00 00 00 00 00 00 E0 2B 1C 00 ... 0x0003a200 | 74 10 00 00 E4 08 00 00 88 2F 1C 00 70 10 00 00 0x0003a210 | E5 08 00 00 E8 2B 1C 00 70 10 00 00 E5 08 00 00 0x0003a220 | 44 39 1C 00 06 00 04 00 C5 35 00 00 06 00 60 01 ---><----------- 0x0003a230 | 3E 38 00 00 07 00 04 00 C9 35 00 00 07 00 60 01 0x0003a240 | 3E 38 00 00 09 00 04 00 14 05 00 00 09 00 04 00 ... FieldIds 0x00049d70 | CC 35 00 00 5A 08 56 08 DC 4C 00 00 5A 08 60 01 0x00049d80 | EA 56 00 00 5B 08 5B 08 B9 24 00 00 5B 08 5B 08 0x00049d90 | B8 57 00 00 06 00 17 0B B4 04 00 00 06 00 20 0B ---><----------- 0x00049da0 | B4 04 00 00 06 00 17 03 A9 3B 00 00 06 00 FC 01 0x00049db0 | 9C 50 00 00 06 00 79 04 9D 50 00 00 07 00 17 0B 0x00049dc0 | B4 04 00 00 07 00 20 0B B4 04 00 00 07 00 EC 03 MethodIds ... 0x000746a0 | 4C 30 00 00 D9 08 9C 02 4C 30 00 00 DA 08 9C 02 0x000746b0 | 4C 30 00 00 DC 08 9C 02 4C 30 00 00 DD 08 9C 02 0x000746c0 | 4C 30 00 00 42 01 00 00 01 00 00 00 FF FF FF FF ---><----------- 0x000746d0 | 00 00 00 00 B1 1F 00 00 34 DA 1A 00 1F 0A 2A 00 0x000746e0 | 00 00 00 00 E7 00 00 00 01 06 00 00 42 01 00 00 0x000746f0 | 00 00 00 00 8D 23 00 00 00 00 00 00 00 00 00 00 0x00074700 | 00 00 00 00 73 01 00 00 01 00 00 00 42 01 00 00 0x00074710 | 9C 23 1C 00 56 25 00 00 7C DA 1A 00 6A 0A 2A 00 0x00074720 | 08 E4 29 00 20 01 00 00 01 00 00 00 73 01 00 00 0x00074730 | 00 00 00 00 A6 0B 00 00 00 00 00 00 04 0B 2A 00 ClassDefs 0x00074740 | 12 E4 29 00 06 00 00 00 11 00 00 00 20 01 00 00 ... 0x00085130 | 00 00 00 00 82 28 00 00 CC 22 1C 00 51 2A 2C 00 0x00085140 | 05 0A 2A 00 5A 08 00 00 01 00 00 00 42 01 00 00 0x00085150 | AC 2B 1C 00 4D 0A 00 00 24 23 1C 00 AD 2A 2C 00 0x00085160 | 09 0A 2A 00 5B 08 00 00 11 00 00 00 42 01 00 00 0x00085170 | 00 00 00 00 AA 26 00 00 84 23 1C 00 7B 2B 2C 00 0x00085180 | 00 00 00 00 01 00 00 00 87 28 29 00 01 00 00 00 ---><----------- 0x00085190 | 95 28 29 00 02 00 00 00 A0 28 29 00 AB 28 29 00 0x000851a0 | 01 00 00 00 B7 28 29 00 01 00 00 00 C8 28 29 00 0x000851b0 | 01 00 00 00 D3 28 29 00 01 00 00 00 E7 28 29 00 0x000851c0 | 01 00 00 00 F1 28 29 00 01 00 00 00 FE 28 29 00 0x000851d0 | 01 00 00 00 09 29 29 00 01 00 00 00 14 29 29 00 data ... 0x002d6c30 | 58 3E 23 00 04 20 00 00 55 0A 00 00 87 28 29 00 0x002d6c40 | 05 20 00 00 7C 02 00 00 08 E4 29 00 00 20 00 00 0x002d6c50 | 15 08 00 00 1F 0A 2A 00 00 10 00 00 01 00 00 00 0x002d6c60 | 08 2C 2C 00 64 65 78 0A 30 33 35 00 11 E1 2D 3F ---><----------- 0x002d6c70 | 23 F7 28 15 B0 A3 2C A4 34 0F 06 39 E4 5C D1 13 0x002d6c80 | 4E 66 79 6A 90 1E 04 00 70 00 00 00 78 56 34 12 0x002d6c90 | 00 00 00 00 00 00 00 00 C0 1D 04 00 DD 0C 00 00 Header 0x002d6ca0 | 70 00 00 00 BF 01 00 00 E4 33 00 00 3B 02 00 00 ...
type | name | value |
---|---|---|
uint8_t[8] | magic_ | "dex.035" |
uint32_t | checksum_ |
0xdd3846ee |
uint8_t[20] | signature_ |
46 FF 89 0D BE CA CD BD |
uint32_t | file_size_ |
0x002c2cd8 |
uint32_t | header_size_ |
0x00000070 |
uint32_t | endian_tag_ |
0x12345678 |
uint32_t | link_size_ |
0x00000000 |
uint32_t | link_off_ |
0x00000000 |
uint32_t | map_off_ |
0x002c2c08 |
uint32_t | string_ids_size_ |
0x00005c5f |
uint32_t | string_ids_off_ |
0x00000070 |
uint32_t | type_ids_size_ |
0x000008e9 |
uint32_t | type_ids_off_ |
0x000171ec |
uint32_t | proto_ids_size_ |
0x00001116 |
uint32_t | proto_ids_off_ |
0x00019590 |
uint32_t | field_ids_size_ |
0x00001f6e |
uint32_t | field_ids_off_ |
0x00026298 |
uint32_t | method_ids_size_ |
0x00005526 |
uint32_t | method_ids_off_ |
0x00035e08 |
uint32_t | class_defs_size_ |
0x00000856 |
uint32_t | class_defs_off_ |
0x00060738 |
uint32_t | data_size_ |
0x00251ae0 |
uint32_t | data_off_ |
0x000711f8 |
StringId[]:
|
string_ids |
0x001c80ae |
TypeId[]:
// index into string_ids |
type_ids |
0x0000062c |
ProtoId[]: |
proto_ids |
{ |
FieldId[]: |
field_ids |
{ |
MethodId[]: |
method_ids |
{ |
ClassDef[]: // index into type_ids_ array for this class uint16_t class_idx_; // padding = 0 uint16_t pad1_; uint32_t access_flags_; // index into type_ids_ array for superclass uint16_t superclass_idx_; // padding = 0 uint16_t pad2_; // file offset to TypeList uint32_t interfaces_off_; // index into string_ids_ for source file name uint32_t source_file_idx_; // file offset to annotations_directory_item uint32_t annotations_off_; // file offset to class_data_item uint32_t class_data_off_; // file offset to EncodedArray uint32_t static_values_off_; |
class_defs |
{ |
uint32_t[] | data |
0x00000001, |
以上是关于dex文件结构的主要内容,如果未能解决你的问题,请参考以下文章
Android Dex VS Class:实例图解剖析两种格式文件结构优劣