Android Dex结构体定义不准确
Author: hzshangCreated Mar 14, 2023Updated Sep 30, 2024
https://ctf-wiki.org/android/basic_operating_mechanism/java_layer/dex/dex/#class-def wiki上展示的DexClassDataHeader结构体是下面的定义
struct DexClassDataHeader {
u4 staticFieldsSize; /* 静态字段个数 */
u4 instanceFieldsSize; /* 实例字段个数 */
u4 directMethodsSize; /* 直接方法个数 */
u4 virtualMethodsSize; /* 虚方法个数 */
};不过根据Android文档 https://source.android.com/docs/core/runtime/dex-format?hl=zh-cn#class-data-item 这里的header定义类型应该为ueb128
| 名称 | 格式 | 说明 |
|---|---|---|
| static_fields_size | uleb128 | 此项中定义的静态字段的数量 |
| instance_fields_size | uleb128 | 此项中定义的实例字段的数量 |
| direct_methods_size | uleb128 | 此项中定义的直接方法的数量 |
| virtual_methods_size | uleb128 | 此项中定义的虚拟方法的数量 |
Source: ctf-wiki/ctf-wiki