android内部dex解析,DEX文件解析---1、dex文件头解析

DEX文件解析---1、dex文件头解析

一、dex文件

dex文件是Android平台上可执行文件的一种文件类型。它的文件格式可以下面这张图概括:

82ab4b47d33019b2cda734d3a9b27d02.png

dex文件头一般固定为0x70个字节大小,包含标志、版本号、校验码、sha-1签名以及其他一些方法、类的数量和偏移地址等信息。如下图所示:

cde1639d0f65610b3b28d9444c34b595.png

二、dex文件头各字段解析

dex文件头包含以下各个字段:

magic:包含了dex文件标识符以及版本,从0x00开始,长度为8个字节

checksum:dex文件校验码,偏移量为:0x08,长度为4个字节。

signature:dex sha-1签名,偏移量为0x0c,长度为20个字节

file_szie:dex文件大小,偏移量为0x20,长度为4个字节

header_size:dex文件头大小,偏移量为0x24,长度为4个字节,一般为0x70

endian_tag:dex文件判断字节序是否交换,偏移量为0x28,长度为4个字节,一般情况下为0x78563412

link_size:dex文件链接段大小,为0则表示为静态链接,偏移量为0x2c,长度为4个字节

link_off:dex文件链接段偏移位置,偏移量为0x30,长度为4个字节

map_off:dex文件中map数据段偏移位置,偏移位置为0x34,长度为4个字节

string_ids_size:dex文件包含的字符串数量,偏移量为0x38,长度为4个字节

string_ids_off:dex文件字符串开始偏移位置,偏移量为0x3c,长度为4个字节

type_ids_size:dex文件类数量,偏移量为0x40,长度为4个字节

type_ids_off:dex文件类偏移位置,偏移量为0x44,长度为4个字节

photo_ids_size:dex文件中方法原型数量,偏移量为0x48,长度为4个字节

photo_ids_off:dex文件中方法原型偏移位置,偏移量为0x4c,长度为4个字节

field_ids_size:dex文件中字段数量,偏移量为0x50,长度为4个字节

field_ids_off:dex文件中字段偏移位置,偏移量为0x54,长度为4个字节

method_ids_size:dex文件中方法数量,偏移量为0x58,长度为4个字节

method_ids_off:dex文件中方法偏移位置,偏移量为0x5c,长度为4个字节

class_defs_size:dex文件中类定义数量,偏移量为0x60,长度为4个字节

class_defs_off:dex文件中类定义偏移位置,偏移量为0x64,长度为4个字节

data_size:dex数据段大小,偏移量为0x68,长度为4个字节

data_off:dex数据段偏移位置,偏移量为0x6c,长度为4个字节

三、dex文件头代码解析示例(python)

dex使用open函数以二进制打开文件,然后使用seek函数移动文件指针,例如magic就是f.seek(0x00),然后读取相应信息的字节数即可,例如读取版本号f.seek(0x04) f.read(4),然后做相应打印操作就行,dex文件头较简单,不涉及编码等,所以解析起来感觉脑子都不用带。。。。。具体代码可以看下面或者github,下面附上代码运行图:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值