win 系统 实施 DEP
win 系统 实施 DEP
除了显式包含可执行代码的内存位置外,硬件实施 DEP 将进程中的所有内存位置均标记为不可执行。有一类攻击是尝试在不可执行的内存位置插入代码并运行它。DEP 可通过截获这些攻击并引发一个异常来帮助阻止这些攻击。
硬件实施 DEP 依靠处理器硬件来使用属性标记内存,此属性指明不能从该内存执行代码。DEP 以虚拟内存页面为单位运行,通常情况下更改 Page Table Entry (PTE) 中的位来标记内存页面。
处理器体系结构确定 DEP 在硬件中的实现方式以及 DEP 标记虚拟内存页面的方式。但是,在从使用合适属性集标记的页面执行代码时,支持硬件实施 DEP 的处理器可能引发异常。
Advanced Micro Devices (AMD) 和 Intel 已经定义并发布了与 Windows 兼容的体系结构,该体系结构与 DEP 兼容。
从 Windows XP SP2 开始,Windows 的 32 位版本使用下列功能之一:
- 由 AMD 定义的 No-Execute Page-Protection (NX) 处理器功能。
- 由 Intel 定义的 Execute Disable Bit (XD) 功能。
注意:由于 64 位内核识别地址窗口化扩展插件 (AWE),因此在 Windows 的 64 位版本中没有单独的 PAE 内核。
有关 Windows Server 2003 中 PAE 和 AWE 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 283037 Windows Server 2003 和 Windows 2000 提供大内存支持
回到顶端
软件实施 DEPWindows XP SP2 中已添加另一套数据执行保护安全检查。这些称为软件实施 DEP 的检查旨在阻止利用 Windows 中异常处理机制的恶意代码。软件实施 DEP 运行在可以运行 Windows XP SP2 的任意处理器上。默认情况下,不管处理器的硬件实施 DEP 功能如何,软件实施 DEP 都是只帮助保护受限的系统二进制文件。
回到顶端
优点DEP 的主要优点是帮助阻止数据页(如默认的堆页、各种堆栈页以及内存池页)执行代码。通常情况下,不从默认堆和堆栈执行代码。硬件实施 DEP 检测从这些位置运行的代码,并在发现执行情况时引发异常。如果异常未得到处理,进程将停止。在内核模式下从受保护的内存执行代码会导致“停止”错误。
DEP 可帮助阻止某类安全入侵。具体而言就是,DEP 可帮助阻止某种恶意程序,在这种恶意程序中,病毒或其他类型的攻击会在进程中插入一段附加代码,并试图运行此插入代码。在带有 DEP 的系统上,执行插入代码会导致发生异常。软件实施 DEP 可帮助阻止利用 Windows 中异常处理机制的程序。
回到顶端
DEP 的系统范围配置系统的 DEP 配置由 Boot.ini 文件中的开关控制。如果以管理员身份登录,则可立即使用“控制面板”中的“系统”对话框轻松配置 DEP 设置。
对于硬件实施和软件实施 DEP,Windows 支持四种系统范围配置。
配置 | 说明 |
选择启用 | 此设置为默认配置。如果系统中具有能够实现硬件实施 DEP 功能的处理器,则默认情况下将对限定的系统二进制文件和“选择启用”程序启用 DEP。使用此选项时,默认情况下,DEP 仅覆盖 Windows 系统二进制文件。 |
选择禁用 | 默认情况下,对所有进程启用 DEP。可以使用“控制面板”中的“系统”对话框手动创建未应用 DEP 的特定程序的列表。信息技术 (IT) 专业人员可以使用应用程序兼容性工具包“选择禁用”DEP 保护的一个或多个程序。用于 DEP 的系统兼容性修补程序和填充程序确实可以发挥作用。 |
总是启用 | 此设置将整个系统置于 DEP 保护范围内。所有进程始终在应用 DEP 的情况下运行。使特定程序不受 DEP 保护的例外列表不可用。用于 DEP 的系统兼容性修补程序不起作用。使用应用程序兼容性工具包选择禁用的程序将在应用 DEP 的情况下运行。 |
总是禁用 | 无论硬件 DEP 是否支持,此设置都不会为系统的任何部分提供 DEP 保护。除非在 Boot.ini 文件中包括“/PAE”选项,否则处理器不会在 PAE 模式下运行。 |
配置硬件实施和软件实施 DEP 的方式相同。如果系统范围的 DEP 策略设置为“选择启用”,则同一 Windows 核心二进制文件和程序既受硬件实施 DEP 的保护,也受软件实施 DEP 的保护。如果系统无法使用硬件实施 DEP,则 Windows 核心二进制文件和程序将只受软件实施 DEP 的保护。
同样,如果系统范围的 DEP 策略设置为“选择禁用”,则不受 DEP 保护的程序既不受硬件实施 DEP 的保护,也不受软件实施 DEP 的保护。
Boot.ini 文件设置如下所示:/noexecute=policy_level
注意:policy_level 可定义为“总是启用”、“总是禁用”、“选择启用”或“选择禁用”。
安装 Windows XP SP2 后,Boot.ini 文件中的现有 /noexecute 设置不会更改。在计算机上移动 Windows 操作系统映像后,无论计算机是否有硬件实施 DEP 支持,这些设置也都不会变化。
在安装 Windows XP SP2 和 Windows Server 2003 SP1 或更高版本的过程中,除非在无人参与安装中指定不同的策略级别,否则默认情况下启用“选择启用”策略级别。对于支持 DEP 的 Windows 版本,如果 Boot.ini 文件中不包括 /noexecute=policy_level 设置,其行为将与包括 /noexecute=OptIn 设置时的行为相同。
如果以管理员身份登录,则可使用“系统属性”中的“数据执行保护”选项卡,手动将 DEP 配置为在“选择启用”和“选择禁用”策略之间切换。以下过程说明如何在计算机上手动配置 DEP:
- 单击“开始”,单击“运行”,键入sysdm.cpl,然后单击“确定”。
- 在“高级”选项卡的“性能”下,单击“设置”。
- 在“数据执行保护”选项卡上,执行下列过程之一:
- 单击“只为关键 Windows 程序和服务启用数据执行保护”以选择“选择启用”策略。
- 单击“除所选之外,为所有程序和服务启用数据执行保护”以选择“选择禁用”策略,然后单击“添加”以添加不希望使用 DEP 功能的程序。
- 单击“确定”两次。
要使用 Boot.ini 文件配置 DEP 以切换到“总是启用”策略,请按照下列步骤操作:
- 单击“开始”,右键单击“我的电脑”,然后单击“属性”。
- 单击“高级”选项卡,然后单击“启动和故障恢复”字段下的“设置”。
- 在“系统启动”字段中,单击“编辑”。在记事本中打开 Boot.ini 文件。
- 在记事本中单击“编辑”菜单上的“查找”。
- 在“查找内容”框中键入/noexecute,然后单击“查找下一个”。
- 在“查找”对话框中,单击“取消”。
- 用 AlwaysOn 替换 policy_level。
警告:请确保输入的文本正确无误。现在,Boot.ini 文件开关应显示为:/noexecute=AlwaysOn - 在记事本中单击“文件”菜单上的“保存”。
- 单击“确定”两次。
- 重新启动计算机。
目录 返回
首页