浏览器堆喷时,为什么说堆头大小是32字节?

编程入门 行业动态 更新时间:2024-10-26 07:23:01

浏览器堆喷时,为什么说堆头大小是32<a href=https://www.elefans.com/category/jswz/34/1769891.html style=字节?"/>

浏览器堆喷时,为什么说堆头大小是32字节?

最近在研究浏览器精准堆喷相关的技术,找到老外的一篇文章中提到计算堆喷的数据块时,应该减去一些必要的大小,如:堆头32字节,BSTR结构的6个字节(BSTR长度和结束符)

.html
文中提到:

其中为什么要减去堆头大小32字节,让我很疑惑,因为我看到的堆头明明只有8个字节啊!

经过查询了很多外文资料,也是给解释堆的头结构大小只有8个字节,如下图:

资料一:

资料二:

经过动手调试发现,原来真的是32字节,
我在堆喷后的块中,选择了第一个堆块,入口地址为0x037b0018

这些堆喷申请的堆块是在默认堆中分配出来的,它的父级堆地址就是0x140000,结构是**_HEAP**,通过查看父级堆的结构,发现了一个和0x37b0018很接近的地址,在VirtualAllocdBlocks字段中,一下子让我想起来,Windows内存管理中的知识!!

VirtualAllocdBlocks字段是一个双向链表结构,记录着0x140000这个进程中默认堆中申请过的小堆块。

下图中:
0)红色代表双堆碎片的向链表 8字节
1)黄色代表堆块头 8字节
2)蓝色代表堆的数据区 x字节

现在就解释清楚了,为什么要减去32字节的堆头了!!

更多推荐

浏览器堆喷时,为什么说堆头大小是32字节?

本文发布于:2024-03-12 16:46:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1731951.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字节   浏览器   大小   说堆头   堆喷时

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!