学习笔记简友广场

PWN 堆入门

2021-08-01  本文已影响0人  佩玖吟

什么是堆

堆(chunk)内存是一种允许程序在运行过程中动态分配和使用的内存区域。相比于栈内存和全局内存,堆内存没有固定的生命周期和固定的内存区域,程序可以动态地申请和释放不同大小的内存。被分配后,如果没有进行明确的释放操作,该堆内存区域都是一直有效的。


image.png

基本思想

申请堆块

释放堆块

由malloc申请的内存称为chunk,是glibc管理内存的基本单位。为了高效地分配内存并尽量避免内存碎片,Ptmalloc2 将大小不同的 free chunk 分为不同的 bin 结构

free chunk

chunk被释放时,glibc会将他们重新组织起来构成不同的bin链表,当用户重新申请时,就从中寻找合适的chunk返回用户。

Fast bin

Unsorted bin

上一篇 下一篇

猜你喜欢

热点阅读