我有一个正在运行的可执行文件(“heidisql.exe”)。Sysinternals 进程浏览器"DEP (permanent)
在DEP列中显示“。
我静态地检查了二进制文件(其中包括使用佩斯多)静态分析结果都说DEP是不是支持,即IMAGE_DLLCHARACTERISTICS_NX_COMPAT
不设置该位。
那么,为什么 Process Explorer 会显示这个信息呢DEP (permanent)
?
更奇怪的是:宾斯科 (微软的免费工具)根本没有列出“ ”的结果NXCOMPAT check
,无论是“失败的检查”、“未完成的检查”还是“通过的检查”。这是什么意思?
答案1
这博客文章说:
对于 64 位版本的 Windows 上的 64 位进程,DEP 始终处于“开启”状态,并且无法禁用。
此外,Microsoft 文档说:
在 64 位版本的 Windows 上,如果硬件强制 DEP 可用,它将始终应用于 64 位进程和内核内存空间,并且没有系统配置设置可以禁用它。
和这个:
每个应用程序的 DEP 配置
当 DEP 设置为策略级别时,为了实现应用程序兼容性OptOut
,可以选择性地为单个 32 位应用程序禁用 DEP。但是,对于 64 位应用程序,DEP 始终处于启用状态。