GDB gef 插件安装与使用

GDB gef插件安装与使用

GEF(GDB Enhanced Features)是 GDB 的第三方增强插件,用于可视化分析 glibc 堆结构、chunk 布局,辅助定位堆内存损坏导致的 coredump 问题。

一、安装 gef 插件

1.1 下载合适的版本

先查询 GDB 内置的 Python 版本:

(gdb) python import sys; print(sys.version)
2.7.13 (default, Jan 11 2017, 10:56:06) [GCC]

1.2 安装

  1. 将 gef 放到某个目录,例如 $GEF_PATH 目录下。
  2. 将加载指令写入 GDB 初始化配置文件:
    echo "source $GEF_PATH/gef-legacy/gef.py" >> ~/.gdbinit
    
  3. 执行 gdb,若提示符变为 gef> 则安装成功。

二、gef 分析 glibc 堆结构常用命令

2.1 heap 系列命令

命令 说明
heap arenas 列出程序中所有活跃的 arena
heap set-arena <addr> 手动设置 main_arena 的地址
heap chunks 显示当前 arena 中所有堆块信息
heap chunk <addr> 显示指定地址堆块的详细信息
heap bins 显示所有 bin 链表状态
heap bins fast 显示 fastbins 链表
heap bins tcache 显示 tcache 链表(glibc 2.26+)
heap bins unsorted 显示 unsorted bin 链表
heap bins small 显示 small bins 链表
heap bins large 显示 large bins 链表

2.2 其他常用命令

命令 说明
telescope <addr> 递归解引用一个地址
hexdump <addr> 以十六进制显示内存范围的内容
xinfo <addr> 查询指定地址的虚拟内存段信息,确认地址合法性
search-pattern <pattern>(别名 grep) 在进程内存中搜索特定字符串或字节序列。可用于定位被写入堆元数据的可疑数据(如攻击者控制的地址)
vmmap 显示进程完整虚拟内存映射,高亮堆、栈、代码段等区域

2.3 典型分析流程

  1. 确定战场:用 vmmap 找到堆的范围,用 heap arenas 确定出问题的 arena。
  2. 观察现状:用 heap chunks 查看整体布局,找出异常 chunk(如 size 字段明显不对)。
  3. 深入病灶:用 heap chunk <addr> 检查可疑 chunk 的元数据。
  4. 追查线索:用 heap bins 查看各链表现状,若发现某个 bin 的 fd/bk 指向异常地址,用 telescope 和 hexdump 查看该地址内容。
posted @ 2026-09-29 10:07  CJXUNOO  阅读(6)  评论(0)    收藏  举报