main_arena 结构
main_arena 是 glibc 中堆管理器的核心数据结构,你可以把它理解为堆内存的总指挥部。
main_arena 的基本概念:
1 | // glibc 源码中 |
main_arena 是一个全局变量,类型是 struct malloc_state。它存储了堆管理器运行所需的所有元数据,包括 bins 链表(fastbin、smallbin、largebin、unsorted bin)的头指针 ,top chunk 的位置等。
由于main_arena 是 libc.so 的一个全局变量,它在 libc 中的偏移是固定的。因此使用 main_arena 泄露 libc_base 也是一种常见的攻击手法。
main_arena 通常在 __malloc_hook 的高地址 0x10 处
1 | main_arena = __malloc_hook + 0x10 |
main_arena 的内部结构:
1 | // glibc 2.32 malloc/malloc.c |
1 | main_arena 基址 (例如: 0x7f1234567b80) |
main_arena 关键偏移速查:
1 | # 基于 glibc 2.32 x86_64 |
1 |
|
更新: 2026-04-27 09:07:01
原文: https://www.yuque.com/idcm/wnemg9/pkwcn2laubfihq67