堆漏洞挖掘中的Chunk分类(allocated chunk、free chunk、top chunk、last remainder chunk)

article/2025/8/27 20:53:11

  • 此图是在上篇文章介绍arena时用到的,我们可以看到:堆块被分为不同的种类,下面我们将来介绍这些。
  • 每一类就是一个malloc_chunk结构体,因为这些chunk同属于一个堆块,所以在一块连续的内存中,只是通过区域中特定位置的某些标识符加以区分。
  • glibc给我们申请的堆块主要分为以下几类:
    • allocated chunk。
    • free chunk。
    • top chunk。
    • Last remainder chunk。
  • 为了简便,我们将4个种类的chunk划分为2个种类的chunk,这两个种类的chunk才是我们平常口头上所使用到的:
    • allocated chunk:当前chunk是被应用层用户所使用的。
    • free chunk:当前chunk是空闲的,没有被应用层用户所使用。

Top Chunk:

  • 概念:当一个chunk处于一个arena的最顶部(即最高内存地址处)的时候,就称之为top chunk。
  • 作用:该chunk并不属于任何bin,而是在系统当前的所有free chunk(无论那种bin)都无法满足用户请求的内存大小的时候,将此chunk当做一个应急消防员,分配给用户使用。
  • 分配的规则:如果top chunk的大小比用户请求的大小要大的话,就将该top chunk分作两部分:1)用户请求的chunk;2)剩余的部分成为新的top chunk。否则,就需要扩展heap或分配新的heap了——在main arena中通过sbrk扩展heap,而在thread arena中通过mmap分配新的heap。

Last Remainder Chunk:

  • 它是怎么产生的:当用户请求的是一个small chunk,且该请求无法被small bin、unsorted bin满足的时候,就通过binmaps遍历bin查找最合适的chunk,如果该chunk有剩余部分的话,就将该剩余部分变成一个新的chunk加入到unsorted bin中,另外,再将该新的chunk变成新的last remainder chunk。
  • 它的作用是什么:此类型的chunk用于提高连续malloc(small chunk)的效率,主要是提高内存分配的局部性。那么具体是怎么提高局部性的呢?举例说明。当用户请求一个small chunk,且该请求无法被small bin满足,那么就转而交由unsorted bin处理。同时,假设当前unsorted bin中只有一个chunk的话——就是last remainder chunk,那么就将该chunk分成两部分:前者分配给用户,剩下的部分放到unsorted bin中,并成为新的last remainder chunk。这样就保证了连续malloc(small chunk)中,各个small chunk在内存分布中是相邻的,即提高了内存分配的局部性。
  • 详情见文章:https://blog.csdn.net/qq_41453285/article/details/97803141。

  • 我是小董,V公众点击"笔记白嫖"解锁更多【堆漏洞挖掘】资料内容。


http://chatgpt.dhexx.cn/article/h1Hm1KTn.shtml

相关文章

GBase 8s 块(chunk)

块是用于数据库服务器数据存储数据文件。可以是文件系统或裸设备。单个块的最大大小是 4TB。数据库最多可支持块数为 32,766 个。 在 UNIX 或 LINUX 上,建议使用裸设备,在 Windows 上,建议使用 NTFS文件系统。 下图对数据库块进行了图解说明…

Spring Batch 中的 chunk

我们都知道 Spring Batch 有 2 种任务方式。 主要是在 Step 阶段,在 Step 阶段,我们可以执行一个 Tasklet,我们也可以按照 Chunk 来执行。 主要区别 如果使用 Tasklet 的话,我们可以一个 Step 对应一个 Tasklet,Spr…

Webpack 理解 Chunk

期望 希望读过本篇文章,你在看Webpack配置的时候,能在脑中形成Chunk的生成过程。 Chunk Chunk不同于entry、 output、module这样的概念,它们对应着Webpack配置对象中的一个字段,Chunk没有单独的配置字段,但是这个词…

Http chunk介绍

总结: HTTP 1.1时,Response要嘛通过Content-Length来指定要传输的内容大小,要嘛通过Transfer-Encoding: chunked来传输动态大小的内容,此时要求Response传输的内容要符合chunk encoding的规定。 从抓包的角度来说,两个…

lua中chunk的理解

在Lua中,一个chunk是一段可执行的Lua代码。通常,一个chunk由一系列语句和表达式组成,可以是一个完整的程序文件,也可以是一个交互式控制台中输入的一行代码。 例如,下面是一个简单的Lua chunk: print(&qu…

【深度学习】Pytorch chunk函数

Pytorch chunk的方法做的是对张量进行分块,返回一个张量列表。但如果指定轴的元素个数被chunks除不尽,最后一块的元素个数会少。 torch.chunk(tensor, chunks, dim0) ->得到一个list的tensors 这个函数的作用是把一个tensor划分到特定数目的块。 chu…

不会还有人不知道module、bundle和chunk的区别吧?

module 非连续的功能块——提供了更小的表面积而不是整个程序。书写良好的modules提供了可靠的抽象及封装边界,组成了统一的设计和清晰的目的;模块解析(ModuleResolution)一个模块可以作为另一个模块的依赖模块,resolv…

torch.chunk

torch.chunk(tensor, chunk_num, dim)与torch.cat()原理相反,它是将tensor按dim(行或列)分割成chunk_num个tensor块,返回的是一个元组。 a torch.Tensor([[4,5,7], [3,9,8], [9,6,7]]) b torch.chunk(a, 3, dim 1) print(a) pri…

webpack中的chunk

Webpack 理解 Chunk - 掘金 Webpack 理解 Chunk 期望 希望读过本篇文章,你在看Webpack配置的时候,能在脑中形成Chunk的生成过程。 Chunk Chunk不同于entry、 output、module这样的概念,它们对应着Webpack配置对象中的一个字段&#xff0…

什么是chunk?

本文借鉴《自己动手实现Lua:虚拟机、编译器和标准库》,算是对自己学习的总结,也希望分享下所学知识~~ 什么叫Chunk? 一段可以被Lua解释器解释执行的代码就叫做chunk 可以很小,小到只有一两条语句;可以很大…

生日悖论matlab模拟

概率论课堂小作业 要求用matab模拟生日悖论 条件:30人||100次 本来想白嫖网上的解答 结果竟然找不到用matlab模拟仿真的 所幸不难 自己动手,也为后人铺路。 话不多说,直接上代码 clc clear m100; %仿真次数 N30;%学生人数 for j 1:mB zero…

Python关于生日悖论分析

生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。编写程序,输出在10000例随机样本数量下,n个人中至少两个人生日相同的概率。(n从10到50,不考虑闰年) 代码: imp…

男孩女孩问题 生日悖论 三门问题

上篇文章 洗牌算法详解 讲到了验证概率算法的蒙特卡罗方法,今天聊点轻松的内容:几个和概率相关的有趣问题。 计算概率有下面两个最简单的原则: 原则一、计算概率一定要有一个参照系,称作「样本空间」,即随机事件可能…

生日悖论问题

生日悖论是指,如果一个房间裡有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%。从引起逻辑…

生日悖论MATLAB仿真

生日悖论MATLAB仿真 终于熬过了这学期!不知不觉大学的3/8已经过去了。回顾以下本学期让我印象最深刻,也最有成就感的事情是写出了我人生中第一个MATLAB程序!由于先前零基础,所以从idea到code实现的整个过程是非常坎坷的QAQ那么话…

生日悖论 Birthday Paradox 至少有两人同一天生日概率

首先我们来看下生日悖论: 假设有n个人,365天的时间,假设所有人生日不相同的概率为(1-P) 第一个人可选择365 天中的任意365天,人数为1时所有人生日不相同的概率为365/365; 第二个人可选择365天…

【密码学/密码分析】生日悖论及生日攻击

生日悖论及生日攻击 鸽巢原理:给定n个鸽巢,至少存在n1只鸽子,那总是会发生碰撞。 概率环境:我们需要多少个物体(鸽子)使得发生碰撞的概率大于1/2? 答案是n1/2,而不是n/2。 举个例…

生日悖论的泛化问题的讨论

著名的生日悖论,不多言。 见维基百科: http://zh.wikipedia.org/wiki/%E7%94%9F%E6%97%A5%E6%82%96%E8%AE%BA 见百度百科: http://baike.baidu.com/view/859474.htm 摆渡、喂鸡,排名不分先后。 维基里面提到了泛化推广。生日…

关于生日悖论问题的验证

昨天在网上看到一个非常有意思的问题: 数学老师和体育老师打赌,数据老师认为在他们有50个人的班级里有两个生日是同一天的同学的概率远超没有的概率,反之是体育老师的观点。 第一次看到的时候我觉得这特数学老师才是教体育的吧, 我…

python生日悖论分析_生日悖论

python生日悖论分析 If you have a group of people in a room, how many do you need to for it to be more likely than not, that two or more will have the same birthday? 如果您在一个房间里有一群人,那么您需要多少个才能使两个或两个以上的人有相同的生日…