堆基本操作

记录一些学习堆的过程中的笔记,一些基本操作,以防忘记,备查。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
调用辅助调试堆的插件
gef > start
gef > heap-analysis-helper
查看main函数汇编代码
gef > disassemble main
查看所有malloc出来的chunk
gef > heap chunks
查看特定的chunk
gef > heap chunk address
查看整个chunk中的内容
gef > x/20gx address
查看整个chunk中的重要信息
gef > p *(mchunkptr) address
查看bin相关信息
gef > heap bins

x/20gx:
x-16进制
20-从当前地址向后显示20个内存单元
g-> b表示单字节,h表示双字节,w表示四字节,g表示八字节

1
2
3
4
b - byte 字节  
h - halfword 半字(16位)
w - word 字(32位)
g - giant word 双字(64位)

unlink

近来看了许多关于堆的文章,其中提到一个东西叫unlink,一直不知道是什么东西,专门看了好几篇unlink的文章终于理解了。
简单来说,unlink简单来说就是将已经free的chunk从某bin里拿出来,并和刚刚free的某相邻chunk合并,重新放入某bin中。

您的鼓励将支持我继续努力!