Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
heaptrace — 帮助可视化和调试pwn的堆操作 | Kitploit
工具/GitHubGitHub/arinerron/heaptrace
内存取证调试器CTF二进制分析
GitHubarinerron/heaptrace

heaptrace

帮助可视化和调试pwn的堆操作

查看仓库
330193年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

关于

heaptrace 是一个堆调试器,用于跟踪 ELF64 (x86_64) 二进制文件中的 glibc 堆操作。其目的是在调试二进制文件或进行堆漏洞利用时,帮助可视化堆操作。

screenshot.png

  • 将地址替换为易于理解的符号
  • 检测堆损坏和内存泄漏问题
  • 可在任何时刻使用 gdb 进行调试(--break)
  • 支持所有 ELF64 (x86_64) 二进制文件,无论 ASLR 或编译器设置如何(包括 stripped 二进制文件)

heaptrace 和 valgrind 有何不同?

安装

官方发布版

请参阅 Releases 页面 上的 .deb 和 .rpm 发布文件,以及预编译的二进制文件。

Ubuntu PPA

root@kitploit:~
$ sudo add-apt-repository ppa:arinerron/heaptrace
$ sudo apt-get update
$ sudo apt-get install heaptrace

Arch 用户软件仓库 (PKGBUILD)

使用你偏好的 AUR 助手来安装以下两个软件包之一:

  • heaptrace-git — 源码包 (PKGBUILD)
  • heaptrace — 二进制包 (PKGBUILD)
root@kitploit:~
$ trizen -S heaptrace-git
... 或者 ...
$ trizen -S heaptrace

从源码编译

root@kitploit:~
$ git clone https://github.com/Arinerron/heaptrace.git && cd heaptrace
$ make
$ sudo make install
...
$ heaptrace ./target

用法

你可以在指定二进制文件名之前,向 heaptrace 传递参数:

root@kitploit:~
Usage:
  heaptrace [options...] <target> [args...]
  heaptrace [options...] --attach <pid>

Options:
  -p <pid>, --attach <pid>, --pid <pid>
	指示 heaptrace 附加到指定的 pid,而不是从 `target` 
	参数运行二进制文件。注意,如果你指定此参数,则无需指定 `target`。


  -b <expression>, --break=<expression>, --break-at=<expression>
	当指定的 `expression` 满足条件时,向进程发送 SIGSTOP 
	信号,并将 GNU 调试器 (gdb) 附加到该进程。

	此参数支持复杂表达式。请参阅文档了解更多信息: 
	https://github.com/Arinerron/heaptrace/wiki/How-to-Create-Breakpoints


  -B <expression>, --break-after=<expression>
	类似于 `--break`。用 gdb 替换跟踪器进程,但仅在堆函数返回之后。 
	请参阅文档了解更多信息: 
	https://github.com/Arinerron/heaptrace/wiki/How-to-Create-Breakpoints


  -e <name=value>, --environ=<name=value>, --environment=<name=value>
	设置单个环境变量。用于设置目标运行时的设置,例如 
	LD_PRELOAD=./libc.so.6,而不影响 heaptrace 自身的运行配置。 
	此选项可多次使用。


  -s <sym_defs>, --symbols=<sym_defs>
	覆盖 heaptrace 检测到的 malloc/calloc/free/realloc/reallocarray 
	符号的值。当 heaptrace 无法自动识别 stripped 二进制文件中的堆函数时 
	非常有用。请参阅 wiki 获取更多信息。


  -F, --follow-fork, --follow
	如果目标调用了 fork()、vfork() 或 clone(),指示 heaptrace 分离父进程 
	并跟踪子进程。

	默认行为是分离子进程,仅跟踪父进程。


  -G <path>, --gdb-path <path>
	指示 heaptrace 使用 `path` 中指定的 gdb 路径,而不是默认的 
	/usr/bin/gdb。


  -w <width>, --width=<width>, --term-width=<width>
	强制指定终端宽度。


  -o <file>, --output=<file>
	将 heaptrace 输出写入 `file`,而不是 /dev/stderr(默认输出路径)。


  -v, --verbose
	打印详细信息,例如源代码中的行号(前提是在 ELF 中存储了所需的调试信息)。


  -V, --version
	显示当前 heaptrace 版本。


  -h, --help
	显示此帮助菜单。

  • 例如,如果你想在操作 #3 处自动附加 gdb,可以执行 heaptrace --break=3 ./my-binary。请参阅 wiki 文档 获取有关如何使用此参数的更多信息。
  • 请参阅 wiki 文档 获取有关如何使用 -s/--symbol 参数调试 heaptrace 未能自动识别函数的 stripped 二进制文件的更多信息。
  • 设置 $NO_COLOR 变量以从输出中移除 ANSI 颜色代码。此选项仍在开发中,不久将转换为参数。

支持

如果你遇到 bug 或有任何反馈,我很乐意提供帮助。请参阅 GitHub Issues 页面。

下载工具