DEP(计算机术语)

DEP计算机术语

DEP-数据执行保护的缩写,DataExecutionPrevention。能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在Microsoft Windows XP Service Pack 2、 Microsoft Windows Server 2003 Service Pack 1 、Microsoft Windows XP Tablet PC Edition 2005 和 Microsoft Windows Vista 中,由硬件和软件一起强制实施 DEP。

中文名

数据执行保护

外文名

Data Execution Prevention

优点

帮助防止数据页执行代码

分类

硬件技术

工作状态

四种

作用

帮助防止在系统上运行恶意代码

简介

数据执行保护(DEP)是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。[1]在 Microsoft Windows XP Service Pack 2、 Microsoft Windows Server 2003 Service Pack 1 、Microsoft Windows XP Tablet PC Edition 2005 、 Microsoft Windows Vista 和 Microsoft windows7 中,由硬件和软件一起强制实施DEP。

主要优点

可帮助防止数据页当作代码执行,从而有效分离数据与代码。通常情况下,不执行默认堆和堆栈中的代码。硬件实施DEP检测从这些位置运行的代码,并在发现执行情况时引发异常。软件实施DEP可帮助阻止恶意代码利用Windows中的异常处理机制进行破坏。

硬件DEP是某些DEP兼容处理器的功能,可以防止在已标记为数据存储区的内存区域中的代码执行。此功能也称为非执行和执行保护。Windows XP SP2还包括软件实施DEP,其目的在于减少利用Windows中的例外处理机制的情况。

与防病毒程序不同,硬件和软件实施DEP技术的目的并不是防止在计算机上安装有害程序。而是监视您的已安装程序,帮助确定它们是否正在安全地使用系统内存空间。为监视您的程序,硬件实施DEP将跟踪已指定为“不可执行”的内存区域。如果已将内存指定为“不可执行”,但是某个程序试图通过内存执行代码,Windows将关闭该程序以防止恶意代码。无论代码是不是恶意,都会执行此操作。从而使代码内存空间存放可执行的代码,数据内存空间只存储数据,数据空间中如果有任何代码都视作数据,不给予代码执行权限。

注意事项

注:基于软件的DEP是 Windows XP SP2的一部分并默认启用,不考虑处理器的硬件实施DEP功能。默认情况下,软件实施DEP应用于核心操作系统组件和服务。

DEP默认配置的目的在于保护您的计算机,并尽量减小对应用程序兼容性的影响。但是某些程序也可能无法正确运行,视您的DEP配置而定。

在运行 Microsoft Windows XP 64位版本并附带DEP兼容处理器的计算机上,硬件实施DEP已默认启用。64位应用程序将不会通过内存的“不可执行”区域来运行。不能禁用硬件启用的DEP。

Windows XP SP2 上的软件启用DEP以及在任何处理器上运行的32位应用程序可以配置为使用内存的“可执行”或“不可执行”区域。

为了配合微软的DEP功能,Intel为自己的CPU开发了“Execute Disable Bit”(EDB)内存保护技术。目前Intel P4 Prescott(mPGA478与LGA775封装)为C0或D0步进核心,最新的J系列P4 Prescott采用E0步进核心。其中只有J系列P4 Prescott具备防病毒功能,只有它才真正支持EDP技术,能够配合SP2的DEP防毒功能,让针对缓冲区溢出(buffer overrun)漏洞设计的病毒失效,预防它们复制并散播到其他系统。

AMD64位处理器最先支持微软的DEP技术。为了配合DEP,AMD与微软一起设计研发了AMD的新芯片功能“Enhanced Virus Protection”(EVP增强病毒保护)。AMD64位处理器(包括Athlon 64/Athlon 64 FX/Athlon 64移动版本/Sempron移动版本等)都将具有EVP功能。EVP功能可以和SP2的DEP技术配合,防范“缓存溢出”这一常见攻击手段,打击一些病毒和蠕虫,对收发电子邮件、下载文件等日常工作进行更好的保护。

安全机制

DEP(Data Execution Prevention)即“数据执行保护”,这是Windows的一项安全机制,主要用来防止病毒和其他安全威胁对系统造成破坏。微软从Windows XP SP2引入了该技术,并一直延续到此后的Windows Server 2003、Windows Server 2008中。毫无例外,在Windows 7中DEP也作为一项安全机制被引入进来。本文将对Windows 7下的DEP进行一番解析。

防止溢出

可以说,溢出是操作系统(应用软件)永远的痛,Windows 7自然也不例外。所谓溢出主要指缓冲区溢出,就是利用系统(应用软件)漏洞从只有Windows和其他程序可以使用的内存位置执行恶意代码从而达到控制系统的目的。如前所述,缓冲区溢出攻击经常在其它程序的内存缓冲区写入可执行的恶意代码,然后诱骗程序执行恶意代码。使用DEP的目的是阻止恶意插入代码的执行,其运行机制是,Windows利用DEP标记只包含数据的内存位置为非可执行(NX),当应用程序试图从标记为NX的内存位置执行代码时,Windows的DEP逻辑将阻止应用程序这样做,从而达到保护系统防止溢出。

实现方式

微软DEP实现采用了两种方式,即硬件强制DEP和软件强制DEP。硬件强制DEP,这需要处理器的支持,不过现在大多数处理器是支持DEP的。软件强制DEP,这是由Windows操作系统在系统内存中为保存的数据对象自动添加的一组特殊指针提供。如何知道自己的处理器是否支持DEP呢?右键单击桌面上的“计算机”图标,选择“属性”,在打开的“系统”窗口中点击“高级系统设置”链接打开“系统属性”面板。

在“高级”选项卡页面中的“性能”下点击“设置”打开“性能选项”面板。点击“数据执行保护”选项卡,在该页面中我们可确认自己计算机的处理器是否支持DEP。如果支持会在底部的一行显示“你的计算机处理器支持基于硬件的DEP。”,反之会显示“你的计算机处理器不支持基于硬件的DEP,不过,Windows能使用DEP软件防止一些类型的攻击。”

运行级别

根据启动参数的不同,DEP工作状态可以分为四种。

(1)Optin:默认仅将DEP保护应用于Windows系统组件和服务,对于其他程序不予保护,但用户可以通过应用程序兼容性工具(ACT,Application Compatibility Toolkit)为选定的程序启用DEP,在Vista下边经过/NXcompat选项编译过的程序将自动应用DEP。这种模式可以被应用程序动态关闭,它多用于普通用户版的操作系统,如Windows XP、Windows Vista、Windows7。

(2)Optout:为排除列表程序外的所有程序和服务启用DEP,用户可以手动在排除列表中指定不启用DEP保护的程序和服务。这种模式可以被应用程序动态关闭,它多用于服务器版的操作系统,如 Windows 2003、Windows 2008。

(3)AlwaysOn:对所有进程启用DEP的保护,不存在排序列表,在这种模式下,DEP不可以被关闭,目前只有在64位的操作系统上才工作在AlwaysOn模式。

(4)AlwaysOff:对所有进程都禁用DEP,这种模式下,DEP也不能被动态开启,这种模式一般只有在某种特定场合才使用,如DEP干扰到程序的正常运行。

在Windows 7中,DEP默认是激活的。不过,DEP不能保护系统中所有运行的应用程序,实际DEP能够保护的程序列表由DEP的保护级别定义。DEP支持两种保护级别:级别1,只保护Windows系统代码和可执行文件,不保护系统中运行的其它微软或第三方应用程序;级别2,保护系统中运行的所有可执行代码,包括Windows系统代码和微软或第三方应用程序。

默认情况下,Windows 7的DEP运行在级别1的保护状态下。在“数据执行保护”配置面板中,我们能够设置DEP的保护级别。如图所示笔者的Windows 7默认“只为基本的Windows程序和服务激活了DEP”,即DEP保护级别为1。当然,我们也可选择“除了以下所选择的,为所有程序和服务打开DEP”切换到DEP保护级别2。

在保护级别Level 2可以选择特定的应用程序不受DEP保护。在实际应用中,这个功能非常重要,因为一些老的应用程序在激活DEP时无法正常运行。例如,我我们在使用Word进行文本编辑时,它会自动被排除在DEP保护之外。需要注意的是,在将DEP保护切换到级别2之前,必须运行应用程序兼容性测试,确保所有的应用程序在DEP激活时能正常运行。从DEP中排除应用程序, 需要在DEP配置页面使用“添加”按钮,将应用程序的可执行文件加入到排除列表中。

如何关闭

需要提醒的是,当DEP运行在保护级别为2时,由于需要在处理器和系统内存运行所有的DEP检查,会影响系统性能,使得系统运行将会变慢一些,所以在某些情况下我们可以考虑完全关闭DEP保护。我们知道在DEP设置面板中是不提供关闭DEP选项的,那如何关闭呢?如果是Vista以前的系统,我们可以通过修改Boot.ini文件,在其中添加NoExecute=Always0ff语句来关闭。而在Windows Vista、Windows Server 2008和Windows 7中,boot.ini文件已经被启动配置数据(Boot Configuration Data)即BCD文件所代替,不过我们可以使用微软提供的命令行工具bcdedit.exe来编辑BCD文件。

我们在命令提示符下运行不带有任何参数的bcedit命令,可以看到当前的启动配置,如图所示显示了在Windows 7下运行bcdedit的结果,其中最后一行显示nx OptIn,表示当前的DEP保护级别为1,如果显示为OptOut则表示当前的EDP保护级别为2。如果我们要关闭DEP,只需将nx设置为Always0ff即可。在命令行下执行命令“bcdedit /set nx alwaysoff”,重启系统后Windows 7的DEP就关闭了。反之,如果要开启所有服务和应用程序的DEP,执行命令“bcdedit /set nx alwayson”就可以了。

参考资料

1.windowsxp数据执行保护 (DEP) 功能的详细说明·嗨客软件站

关键词:DEP