- 20
- 0
- 约3.45万字
- 约 33页
- 2020-04-22 发布于天津
- 举报
Exploit编写系列教程第十一篇:堆喷射技术揭秘(下)
【作者】:Peter Van Eeckhoutte
【译者】:hellok
Heaplib
Cache Plunger技术 – oleaut32.dll
正如Alexander Sotirov 在上文中说的,申请字符串(通过SysAllocString)不总是从系统堆里面申请的,而是通常被一个oleaut32中的堆管理引擎来处理。
这个引擎管理内存,以方便快速分配/再分配。还记得我们前面看到的堆栈跟踪吗?
每次一个内存块被释放后,堆管理器就会尝试把指向那个内存堆块的指针保存到缓存中(要做到这一点,需要满足几个条件,但这些条件都不影响我们)。这些指针指向在堆中的任何位置,所以所有数据都有可能出现在某个地方。当一个新的分配情况,缓存系统会看它是否有一大块所要求的大小,可以直接返回。
这将提高性能,并在一定程度上也阻止了堆碎片。
32767 bytes大小以上的块会直接被释放掉,并且不会被缓存。
缓存管理表按块大小排序组织。每一小块“bin” 在缓存表里可以保存堆块的数值。有4种“bin” :
Bin
Size of blocks this bin can hold
0
1 to 32 bytes
1
33 to 64 bytes
2
65 to 256 bytes
3
257 to 32768 bytes
每一个bin可以
您可能关注的文档
最近下载
- 《HJ2045-2014石油炼制工业废水治理工程技术规范》专题研究报告.pptx VIP
- 农村狗狗交配的全过程,让你看了有点不可置信.pdf VIP
- 深度解析(2026)《HJ2045-2014石油炼制工业废水治理工程技术规范》.pptx VIP
- 石油炼制工业废水治理工程技术规范(HJ 2045-2014).pdf VIP
- 电力建设工程预算定额(2018版) 第一册 建筑工程(上册).docx
- NBT 47014-2023 承压设备焊接工艺评定.pdf VIP
- 华为半导体封装岗位机试真题及详细答案(实操版).docx
- 简单就是美讲课论缠和江恩.doc VIP
- 简单就是美博文-第四部分.doc VIP
- 名著《红星照耀中国》阅读任务卡.pdf VIP
原创力文档

文档评论(0)