Apk解析之 —— classes.dex

本文详细探讨了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应用的编译和运行提供了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇解析classes.dex文件,参考文章:Reference
项目源码:ApkParser

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的偏移地址,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值