堆机制利用之fastbin
前半部分:基于libc2.23(无tcache)
堆机制(fastbin等)
想要了解堆的机制利用方法必须要先了解堆的基本机制以及结构
目前主要使用的内存管理库是ptmalloc,而在ptmalloc中,用户请求的空间由名为chunk的数据结构表示
下面就是一个标准的chunk结构
该chunk中,**prev_size参数为前一chunk(如果未被使用)的大小,size参数为该chunk的大小,而P参数(pre_insue)为标志位,标志前一个chunk的使用情况。**而上述的三个参数组成了chunk的header部分,该部分一般不会被用户直接访问
用户能够访问的空间为mem部分,如果一个chunk正被使用,则data部分为用户储存内容的空间,此时fd、bk指针并无实际意义。如果一个chunk未被使用,则mem部分的fd与bk储存的分别是上一个和下一个未被使用的chunk的地址。而这样的一个由未被使用的chunk组成的链表被称为bin。
一般而言,不同大小的free chunk会被分类到不同的bin中,**而bin的类型可以被分为fast bin, small bin,large b