用AppVerifier查找堆破坏

AppVerifier原理

AppVerifier的原理是hook分配和释放资源的API,在程序调用这些API时记录信息,在程序退出时报告出未释放的资源。

堆破坏程序

所谓堆破坏,就是访问了不该访问的内存。下面是用VS2015社区版,写的一个C++的Win32堆破坏程序例子:

char *p = new char[5];
p[0] = 1;// ok
p[10] = 10;//heap error, buffer overflow

将程序生成Release,Win32程序(heaperr.exe)。

调试环境配置

  • 下载AppVerifier,从这里,安装

用AppVerifier调试heaperr.exe

  • (1) 打开AppVerifier,选择File-> Add Application添加应用程序

  • (2) 选择Basic最基本的验证,Save

用AppVerifier查找堆破坏_第1张图片

  • (3) 运行heaperr.exe

  • (4) 从AppVerifier的菜单View选择Logs,选择

用AppVerifier查找堆破坏_第2张图片

  • (5) 查看Log中的error

用AppVerifier查找堆破坏_第3张图片

你可能感兴趣的:(C++,Windows,概率图模型,贝叶斯网络,链式法则,C++)