APK Sig Block 42

块的结构

8字节  块的大小 (整个块的大小,不包括这8个字节)
ID-Value序列
8字节  块的大小 (值=上面的块大小)
16字节  Magic标识, 内容为"APK Sig Block 42"

ID-Value序列的结构

8字节的Length
4字节的ID1
Value1
----------
Length
ID2
Value2
----------
...
----------
Length
IDn
Valuen

APK的签名信息就是其中一项,ID为0x7109871A

1. 首先根据ECDR的魔数0x06054b50(hex:50 4b 05 06)确定ECDR部分的起始地址,也就是 从文件末尾往前搜索 504B0506
2. ECDR的起始地址+16, 就存储着, 中央目录起始地址

—————————

1. 确定中央目录地址(中央目录地址刚好是APK签名地址的尾地址)
2. 根据中央目录地址和APK签名块的长度确定ID-Value序列的首地址和尾地址
————————-

APK 签名方案 v2分块是一个签名序列,说明可以使用多个签名者对同一个APK进行签名。每个签名信息中均包含了三个部分的内容:

1. 带长度前缀的signed data
其中包含了通过一系列算法计算的摘要列表、证书信息,以及extra信息(可选);

2. 带长度前缀的signatures序列
通过一系列算法对signed data的签名列表。签名时使用了多个签名算法,在签名校验时会是选择系统支持的安全系数最高的签名进行校验;

3. 证书公钥

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注