17、iOS系统内存分配器的利用与漏洞利用策略

iOS系统内存分配器的利用与漏洞利用策略

1. 内存利用策略的转变

过去,常见的攻击策略是覆盖堆元数据,这样在链表元素被解除链接时,攻击者就能覆盖任意内存位置。但如今,覆盖应用特定数据更为常见,因为堆通常会检查其数据结构的一致性。要覆盖应用特定数据,通常需要确保溢出的缓冲区与需要被覆盖的缓冲区相邻。

2. 理解iOS系统分配器

iOS系统分配器名为magazine malloc。若要研究其实现,可参考Mac OS X分配器(其实现位于Mac OS X的Libc源代码的magazine_malloc.c中)。虽然对Mac OS X分配器的旧版本已有一些研究,但关于magazine malloc利用的信息普遍缺乏。

2.1 区域划分

magazine malloc使用区域的概念进行内存分配,堆被分为三个区域:
- Tiny :小于496字节。
- Small :大于496字节但小于15360字节。
- Large :大于15360字节。

各区域的特点如下表所示:
| 区域 | 大小 | 量子大小 | 自由列表情况 |
| ---- | ---- | ---- | ---- |
| Tiny | 1MB | 16字节 | 维护32个自由列表,1 - 31用于分配,最后一个用于合并后的块 |
| Small | 8MB | 512字节 | 维护32个自由列表,1 - 31用于分配,最后一个用于合并后的块 |
| Large | 大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值