专栏名称: 星盟安全
星盟安全工作室---“VENI VIDI VICI”(我来,我见,我征服),我们的征途是星辰大海。从事各类安全研究,专注于知识分享。
今天看啥  ›  专栏  ›  星盟安全

unlink 机制和 unlink 攻击的原理

星盟安全  · 公众号  ·  · 2020-11-19 20:02
UnlinkUnlink是把free掉的chunk从所属的bins链中,卸下来的操作(当然还包括一系列的检测机制),它是在free掉一块chunk(除fastbin大小的chunk外)之后,glibc检查这块chunk相邻的上下两块chunk的free状态之后,做出的向后合并或者向前合并引起的。释放堆释放堆时会判断当前 chunk 的相邻 chunk 是否为空闲状态 (PREV_INUSE(P)位 是否为 0),若是则会进行堆合并。合并时会执行 unlink 操作,将空闲堆块从所属的 bins 链中卸下进行合并,并将合并后的 chunk 添加到 unsorted bin 中堆合并分为向前合并和向后合并注意当前 free 的 chunk 用 this_chunk 表示当前 chunk 的前一个chunk 用 pre_chunk 表示, 大小用 pre_size 表示当前 chunk 的后一个 chunk 用 next_chunk 表示, 大小用 next_size 表示向后合并代码malloc.c 中向 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照