在运行我们的一款软件时,测试人员遇到了 Windows 的数据执行阻止对话框。
我们尝试在开发人员计算机上重现这种情况以进行调试:但没有成功。
有谁知道如何找到可能导致 DEP 保护杀死应用程序的原因? 有可用的现有工具吗?
最佳答案
DEP 对话框通常仅在您尝试从未标记为可执行的区域执行代码时显示。这可能是由您正在使用的库中的“thunk”引起的,例如ATL 窗口化。此问题在 ATL 8.0 中已得到修复。
通过将返回地址设置为不可执行的位置,堆栈垃圾错误(例如缓冲区溢出)也可能导致此问题。如果 DEP 为进程关闭或在硬件上不可用,这可能不会导致访问冲突,而是会导致奇怪的行为。
如果您引发 C++ 异常或引发 SEH 异常,并且您的结构化异常处理程序因缓冲区溢出而被废弃,也可能会发生这种情况。
关于c++ - 跟踪数据执行保护 (DEP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/139826/