码迷,mamicode.com
首页 > 其他好文 > 详细

堆调试技巧

时间:2018-03-07 11:40:45      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:div   条件   数据   检查   size   AC   htc   标记   用户   

  • 微软为了帮助程序员快速找到内存错误导致的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来实现。

                                                  参考《漏洞战争》

 

堆调试技巧

标签:div   条件   数据   检查   size   AC   htc   标记   用户   

原文地址:https://www.cnblogs.com/banchen/p/8520869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!