android apk结构,APK文件结构详解

这篇博客旨在通过向APK中注入渠道信息的实例,深入解析APK的ZIP和APK签名结构。介绍了如何找到中央目录地址,计算ID-Value序列的起始地址,并通过二进制分析提取特定ID的注入信息,帮助读者理解APK文件的内部工作原理。
摘要由CSDN通过智能技术生成

前言

最近有业务需求,需要向已经打包的APK里面注入渠道(channel)信息,方便APK下载安装之后进行渠道归因。向APK里面注入渠道信息已经有比较成熟的方案美团walle。walle的强大和实现原理本文不再赘述。为了理解walle的代码,并且在出现异常case的时候,能够自己解决。必须要对APK文件的结构了如指掌。

因此,本文的目的就是以一个简单的利用walle向APK里面注入渠道号为例。带你了解APK里面的各种细节,相信读者在看完此篇文章之后,再阅读walle的代码的时候一定豁然开朗。

ZIP和APK文件格式概览

ZIP文件格式概览

APK文件本质上是一个ZIP文件,因此在了解APK的格式之前必须先了解ZIP文件的格式。详情参见zip文件格式详解 。

ZIP文件的整体格式如下图所示,主要由三部分组成

数据区(Contents of ZIP entries):存储文件压缩内容

中央目录区(Central Directory Header):存储zip文件里面包含的所有目录

中央目录结尾记录(End of Central Directory Record:ECDR):存储zip文件的整体信息

2ebd88b6be317219c260e77eedaec941.png

其中,中央目录结尾记录对于理解本文最为重要。最好看完zip文件格式详解 再继续往下阅读。此区域里面有一个值核心目录偏移地址非常的重要,以下图为例的话,核心目录的起始地址就是0x2D(注意:是地址,不是数值)

30ba4af3a6b62c674dfb8544bb02781c.png

APK文件格式概览

APK在签名(V2/V3签名)之后,会在数据区和中央目录区之间插入APK签名区(APK Signing Block)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值