堆调试技巧

  • 微软为了帮助程序员快速找到内存错误导致的BUG,在堆管理器中提供了一些调试选项用于辅助堆调试,下面是一些常见的调试选项,可以通过Windbg 提供的gflags.exe 来设置。
 
  1. htc - 堆尾检查,在堆块末尾附加额外的标记信息(通常为8字节),用于检查是否发生溢出。
  2. hfc-堆释放检查,在释放堆块时对堆进行各种检查,防止多次释放同一个堆块。
  3. hpc-堆差数检查,对传递给堆管理的参数进行更多的检查。
  4. ust-用户态栈回溯,即将每次调用堆函数的函数调用信息记录到一个数据库中。
  5. htg-堆标志,为堆块增加附加标志,以记录堆块的使用情况和其他信息。
  6. hvc-调用时验证,即每次调用堆函数是都对整个堆进行验证和检查。
  7. hpa-启用页堆,在堆块后增加专门用于检查溢出的栅栏页,若发生堆溢出触及栅栏页便会立刻触发异常。
 
 
  • 比如要针对app.exe程序添加堆尾检查功能和页堆,去除堆标志,可以执行以下命令:
gflags.exe -i app.exe +ptc +hpa -htg
 
在堆漏洞调试中,较为常用的是htc.hpc.hfc和hpa。
 
  • 不过我自己在调试中,使用windbg设置条件时,!gflag命令并没有执行,也没有去找什么原因,我直接用gflags.exe来实现。

                                                  参考《漏洞战争》

 

转载于:https://www.cnblogs.com/banchen/p/8520869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值