DEP 始终开启(boot.ini 中的“/NoExecute=AlwaysOn”)和 DEP 选择退出(boot.ini 中的“/NoExecute=OptOut”)之间有什么区别?没有例外?
“无例外”= 不适用 DEP 的程序的空列表。DEP =数据执行保护(硬件)。
人们期望它以相同的方式工作,但对于某些应用程序来说它会产生不同的效果:
例如所有版本的超级编辑14 (14.2)。由于 DEP 始终处于开启状态,因此在启动时会崩溃,至少在 Microsoft Windows XP Professional Edition x64 版本上是如此。(更新 2010-03-11:此问题已在 UltraEdit 15.2 及更高版本中得到修复。)
更新 2010-07-12: Mozilla Thunderbird当 DEP 设置为最高级别时,2.0.0.19 在启动时也会崩溃(就像 UltraEdit 以前那样)。
Windows XP、Windows Vista 和 Windows 7 之间有什么区别?
Windows 的 32 位版本和 64 位版本之间有什么区别?
答案1
配置说明
选择参加此设置是默认配置。在具有可实施硬件强制 DEP 的处理器的系统上,默认情况下会为有限的系统二进制文件和“选择加入”的程序启用 DEP。使用此选项,默认情况下只有 Windows 系统二进制文件受 DEP 保护。
选择退出默认情况下,所有进程均启用 DEP。您可以使用控制面板中的“系统”对话框手动创建未应用 DEP 的特定程序列表。信息技术 (IT) 专业人员可以使用应用程序兼容性工具包“选择退出”一个或多个程序的 DEP 保护。DEP 的系统兼容性修复程序或垫片确实会生效。
始终开启此设置可为整个系统提供完整的 DEP 覆盖。所有进程始终在应用 DEP 的情况下运行。无法使用例外列表来免除特定程序的 DEP 保护。DEP 的系统兼容性修复不起作用。已使用应用程序兼容性工具包选择退出的程序在应用 DEP 的情况下运行。
总是关闭此设置不会为系统的任何部分提供任何 DEP 覆盖,无论硬件是否支持 DEP。除非 Boot.ini 文件中存在 /PAE 选项,否则处理器不会在 PAE 模式下运行。
答案2
对于问题 1:根据 Fabrice Roux 的说法(见下文),我认为这种差异是由 Microsoft 为 OptOut 而放入硬件 DEP 中的后门造成的。对于 IrfanView,Steve Gibson 观察到的差异与我对 UltraEdit 观察到的差异相同(见问题),这种差异是由 Microsoft 为其编码了后门的非 DEP 感知 EXE 打包程序 (ASPack) 造成的。
资料来源:
从 http://blog.fabriceroux.com/index.php/2007/02/26/hardware_dep_has_a_backdoor?blog=1, “硬件 DEP 有后门”作者:Fabrice Roux。2007-02-26。“IrfanView 没有使用任何技巧来逃避 DEP……Microsoft 只是编写了一个仅在 OPTOUT 中使用的后门。基本上,Microsoft 会检查可执行文件头中是否有与 3 个字符串之一匹配的部分。如果找到其中一个字符串,Windows 将关闭此应用程序的 DEP。……‘aspack’、‘pcle’、‘sforce’”
从http://www.grc.com/sn/sn-078.htm,作者:史蒂夫·吉布森。“我在微软的网站上找不到任何文档,因为我们发现始终开启和选择退出之间存在差异。也就是说,如果您没有任何选择退出程序,您可能会认为始终开启模式与选择退出相同。事实证明并非如此。例如... IrfanView 文件查看器...在选择退出模式下运行良好,即使它没有选择退出。但它不会启动,Windows 阻止它在始终开启模式下启动。”
从http://www.grc.com/sn/sn-083.htm,作者:Steve Gibson。“... IrfanView ... 在 DEP 开启的情况下无法运行。这是因为它使用 EXE 打包程序,即名为 ASPack 的可执行压缩程序。它无法运行是有道理的,因为可执行压缩程序自然需要解压缩可执行文件,因此它会分配一堆数据内存,将压缩的可执行文件解压缩到其中,然后运行它。好吧,它正在运行数据分配,而这正是 DEP 的设计目的。另一方面,UPX 实际上是领先且最受欢迎的 EXE 压缩程序,它与 DEP 兼容,因为那些人意识到,嘿,当我们分配这些内存时,我们应该将页面标记为可执行文件。”
答案3
将系统 DEP 策略级别设置为 OptOut 允许任何 32 位线程调用 SetSystemDEPPolicy(0),这将禁用分配给该进程的内存空间的 DEP 保护。如果系统的 DEP 策略设置为 AlwaysOn,则调用 SetSystemDEPPolicy 将引发错误。
答案4
更短、更简洁的标题是 MS KB 875352 ;-)
超出您需要了解的范围...