SafeSEH 和 x64

信息安全 视窗 开发 缓冲区溢出 外壳代码
2021-08-30 08:52:39

我在这里读到

/SAFESEH 仅在链接 x86 目标时有效。/SAFESEH 不支持已注明异常处理程序的平台。例如,在 x64 和 Itanium 上,所有异常处理程序都在 PDATA 中注明。

这是什么意思?是否使用 x64 目标检查 SEH 链(存储到 PDATA 结构中)?还是没有针对 x64 目标的 safeSEH 检查?

1个回答

SafeSEH 是一种保护基于堆栈的异常处理程序链不被覆盖的机制。但是,在 x64 和 Itanium 体系结构上,异常处理程序是基于表的(即存储在 PDATA 中),因此不能被堆栈缓冲区溢出直接覆盖 - 它们根本不在堆栈上。因此,SafeSEH 与这些系统无关。