large bin attack
large bin的结构
- 网找了好久,没有一个形象的理解确实读源码不方便,找了好久,mkx7师傅的这篇文章总结的及其好!
largebin 入bin操作
-
当确定victim的大小在largebin范围后,如何将victim插入larbin的过程如下
-
首先判断largebin 是否为空
-
如果空的直接设置victim为victim size大小的chunk 头节点,并将fd_nextsize和bk_nextsize设置为victm
-
如果largebin 不为空,开始下面代码段操作
-
首先判断victim是否小于最小的chunk,如果是,直接插入当前bin的末尾
-
如果不是最小的,则在当前bin中寻找小于victim size的chunk
-
如果找到chunk size == victim size,则无需操作fd_nextsize 和 bk_nextsize,直接链入当钱chunk即可
-
否则找到第一个小于victim size的chunk,将victim插入bin,此时有下面的操作
victim->fd_nextsize = fwd; victim->bk_nextsize = fwd->bk_nextsize; fwd->bk_nextsize = victim; victim->bk_nextsize->fd_nextsize = victim;
-
-
-
else //确定是large bin
{
victim_index = largebin_index (size); //获取victim的下标