程序不会因堆溢出而崩溃

逆向工程 缓冲区溢出
2021-06-10 21:54:45

我正在尝试了解堆溢出,以应对我必须解决的这个利用挑战。

简而言之,程序在堆上分配了 3 个连续的缓冲区,我可以将我想要的任何内容写入所有缓冲区。即使我写了堆管理器使用的指针,它们位于每个缓冲区的末尾,当缓冲区为 HeapFree()d 时不会引发异常。

为什么呢?不应该引发异常吗?我该如何进一步检查?

谢谢

1个回答

AFAIR Windows XP 不一定会因堆损坏而崩溃,您需要使用 gflags.exe(来自调试工具)专门打开此行为

gflags /p /full /enable foo.exe

Pageheap.exe 也可能工作,请参阅http://support.microsoft.com/kb/286470

在任何情况下,利用的目的都不是让进程崩溃,而是让它运行你的代码,所以你不必担心它为什么不会崩溃。