Windows 7下的DEP(数据执行保护)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows XP SP2 DEP技术
你了解Windows XP SP2中的DEP技术么,什么是Windows XP SP2的DEP技术,本文介绍Windows XP SP2中的DEP技术/Longhorn/208/8990208_4.shtml
DEP的防病毒原理
如果你的系统升级到了SP2,启用SP2的DEP功能即可防范病毒破坏,这是因为DEP能够对各种程序进行监视,阻止病毒在受保护的内存位置运行有害代码。

DEP通过处理器的NX(No eXecute)功能,查找内存中没有明确包含可执行代码的数据(这些数据有时会是病毒的源代码),找到这些数据后,NX将它们都标记为“不可执行”。

以后如果某程序在内存中,试图执行这些带“不可执行”标记的代码,SP2将会自动关闭该程序。

因此,假如你运行了一个已经染毒的软件,DEP就会把病毒代码标记为“不可执行”,这样就能阻止病毒在内存中运行,保护电脑中的文件免受蠕虫、病毒的传染破坏。

如果你想充分发挥DEP的保护功能,除了要把系统升级到SP2之外,你的CPU还必须支持DEP 技术。

目前常见的32位处理器(例如P4 Northwood等)并不支持NX,支持该技术的CPU主要有AMD 的64位处理器(Athlon 64、AMD Opteron),以及Intel的安腾系列CPU、J系列的P4 Prescott,据说nVIDIA、VIA、全美达等公司也计划在其芯片中加入NX技术,不过这些厂商更新NX的步伐过于缓慢,正式推出还有待时日。

启用或禁用DEP的方法
默认情况下,SP2仅对基本Windows 程序和服务启用了DEP。

不过你也可以自己设置,让电脑上的所有程序都启用DEP,以便防范病毒。

例如除了Acrobat Reader5.0之外,要让所有的程序和服务都启用DEP,操作方法是:以管理员权限账户登录SP2,然后单击“开始→设置→控制面板”,双击“系统”,单击“高级”选项卡,单击“性能”下的“设置”,单击“数据执行保护”选项卡,选中“为除下列程序之外的所有程序和服务启用DEP”,单击“添加”,导航到“Program Files”文件夹,选择该程序(Acrobat Reader 5.0)的可执行文件(扩展名为.exe),最后单击“确定”完成。

如果你要为某程序(例如Acrobat Reader 5.0)禁用DEP,可以单击以上的“添加”按钮,把它加到列表中即可。

以后该程序就很容易受到攻击,病毒能够潜入该程序中,然后再传染给电脑上的其他程序及Outlook中的联系人,并且破坏你的个人文件。

如果有的程序启用DEP 后无法正常运行,你可以向软件厂商索取兼容DEP的程序版本,如果没有这样的版本则禁用DEP。

为了支持DEP,P4 Prescott采用了EDB 技术
为了配合微软的DEP功能,Intel为自己的CPU开发了“Execute Disable Bit”(EDB)内存保护技术。

目前Intel P4 Prescott(mPGA478与LGA775封装)为C0或D0步进核心,最新的J系列P4 Prescott 采用E0步进核心。

其中只有J系列P4 Prescott具备防病毒功能,只有它才真正支持EDB技术,能够配合SP2的DEP防毒功能,让针对缓冲区溢出(buffer overrun)漏洞设计的病毒失效,预防它们复制并散播到其他系统。

如果你使用了P4 Prescott/Celeron D(C0步进核心)的处理器,升级到SP2之后,就会发现Windows XP操作系统死锁在启动画面,但换上P4 Northwood却不会出现这个问题。

这是因为SP2能够开启P4 Prescott (C0步进核心)内含的EDB 功能,但是这种型号的CPU并没有EDB的执行能力,其内部EDB部分的晶体管不会加电运作,因此会导致系统死锁。

为了解决这个问题,微软已在9月14日发布了相关修正文件,大家可以到微软的官方网站去下载。

Windows XP英文版用户下载地址

/download/c/a/5/ca5f5398-2391-42e6-8b40-f6ec4db31c88/Windows XP-KB885626-v2-x86-enu.exe,Windows XP简体中文版用户下载地址/download/2/b/7/2b75ebbf-ce4c-4595-8ddf-4d45e4c1ca18/Windows XP-KB885626-v2-x86-chs.exe
为了支持DEP,AMD的64位CPU使用EVP技术
AMD 64位处理器最先支持微软的DEP技术。

为了配合DEP,AMD与微软一起设计研发了AMD 的新芯片功能“Enhanced Virus Protection”(EVP增强病毒保护)。

AMD 64位处理器(包括Athlon 64/Athlon 64 FX/Athlon 64移动版本/Sempron移动版本等)都将具有EVP功能。

EVP功能可以和SP2的DEP技术配合,防范“缓存溢出”这一常见攻击手段,打击一些病毒和蠕虫,对收发电子邮件、下载文件等日常工作进行更好的保护。

不过在AMD 64位处理器的机器上安装SP2之后,只要你的电脑启动了DEP功能、并且配置了要求名为Mpegport.sys驱动程序文件的硬件设备,当你使用Sigma设计公司的Realmagic Hollywood Plus DVD解码软件时,就会与DEP发生冲突。

这是因为比较老的驱动程序会进行一些与病毒类似的操作,于是SP2就误认它为病毒,从而启动DEP,导致电脑反复地重新启动。

为了解决这个问题,微软建议用户更新这个较老的驱动程序,或者为这个解码软件禁用DEP,关掉SP2的病毒防护功能。

解析Windows 7下的DEP(数据执行保护)
以Windows 7系统为例,就Windows的DEP(Data Execution Prevention)安全机制进行解读。

DEP(Data Execution Prevention)即“数据执行保护”,这是Windows的一项安全机制,主要用来防止病毒和其他安全威胁对系统造成破坏。

微软从Windows XP SP2引入了该技术,并一直延续到此后的Windows Server 2003、Windows Server 2008中。

毫无例外,在Windows 7中DEP也作为一项安全机制被引入进来。

本文将对Windows 7下的DEP进行一番解析。

1、DEP的安全机制
可以说,溢出是操作系统(应用软件)永远的痛,Windows 7自然也不例外。

所谓溢出主要指缓冲区溢出,就是利用系统(应用软件)漏洞从只有Windows和其他程序可以使用的内存位置执行恶意代码从而达到控制系统的目的。

如前所述,缓冲区溢出攻击经常在其它程序的内存缓冲区写入可执行的恶意代码,然后诱骗程序执行恶意代码。

使用DEP的目的是阻止恶意插入代码的执行,其运行机制是,Windows利用DEP标记只包含数据的内存位置为非可执行(NX),当应用程序试图从标记为NX的内存位置执行代码时,Windows的DEP逻辑将阻止应用程序这样做,从而达到保护系统防止溢出。

2、DEP的实现方式
微软DEP实现采用了两种方式,即硬件强制DEP和软件强制DEP。

硬件强制DEP,这需要处理器的支持,不过现在大多数处理器是支持DEP的。

软件强制DEP,这是由Windows操作系统在系统内存中为保存的数据对象自动添加的一组特殊指针提供。

如何知道自己的处理器是否支持DEP 呢?右键单击桌面上的“计算机”图标,选择“属性”,在打开的“系统”窗口中点击“高级系统设置”链接打开“系统属性”面板。

在“高级”选项卡页面中的“性能”下点击“设置”打开“性能选项”面板。

点击“数据执行保护”选项卡,在该页面中我们可确认自己计算机的处理器是否支持DEP。

如果支持会在底部的一行显示“你的计算机处理器支持基于硬件的DEP。

”,反之会显示“你的计算机处理器不支持基于硬件
的DEP,不过,Windows能使用DEP软件防止一些类型的攻击。

”(图1)
图1 DEP的实现方式
3、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配置页面使用“添加”按钮,将应用程序的可执行文件加入到排除列表中。

(图2)
图2 将应用程序的可执行文件加入到排除列表中
除了上述方法外,我们还可以通过一个工具排除应用程序的DEP保护。

这个工具就是DisableNX,它是微软应用程序兼容性套件(Microsoft Application Compatibility Toolkit )中的一个工具,该套件的最新版本为5.5,大家可以访问微软官方网站下载获得,下载地址是:
/downloads/details.aspx?displaylang=en&Family ID=24da89e9-b581-47b0-b45e-492dd6da2971。

该工具的使用比较简单,大家可根据
命令帮助完成排错操作。

4、查看应用程序是否受到DEP保护
在Windows 7中,我们如何知道应用程序是否受到DEP保护呢?其实,通过任务管理器我们可以查看到我们想要知道的信息。

不过,默认情况下Windows 7的任务管理器并不显示应用程序的DEP列,需要手动操作将其调出来。

在任务栏上单击鼠标右键选择“启动任务管理器”,在Windows 任务管理器窗口中单击“查看”菜单选择“选择列”,然后从选择进程页列中找到并勾选“数据执行保护”项即可。

这样就会在任务管理器中添加“数据执行保护”列,在其下面我们可以看到进程的DEP状态(启用或者停用)。

笔者的Windows 7系统选择的是级别1,可以看到所有的系统进程进程都是启用了DEP保护,而非系统进程比如“WinRar”则DEP状态为“停用”。

不过,笔者这里要说明一下:虽然有些非系统的应用程序,但其DEP状态为“启用”(比如笔者系统中运行的“Windows 7优化大师”),这是因为这些应用程序在安装过程中会创建并注册成系统服务,所以在Windows看来它也是系统进程,当然也就会执行DEP保护。

(图3)
图3 查看应用程序是否受到DEP保护
5、如何关闭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。

如果我们要关闭EDP,只需将nx 设置为Always0ff即可。

在命令行下执行命令“bcdedit /set nx alwaysoff”,重启系统后Windows 7的EDP就关闭了。

反之,如果要开启所有服务和应用程序的DEP,执行命令“bcdedit /set nx alwayson”就可以了。

(图4)
图4 如何关闭DEP保护
总结:其实DEP并部署医治Windows系统缓冲区溢出问题的万能解药,它的意义在于使得恶意软件难以利用缓冲区溢出。

而且DEP提供的缓冲区溢出保护也有一定的副作用,就是是被DEP阻止的应用程序通常将被挂起,即使DEP停止了恶意程序执行恶意代码,但是这种情况为恶意程序启动DOS攻击创造了新的机会。

最后说明一点,本文有关DEP的解析虽然以Windows 7为例,但大部分也适用于Windows Vista和Windows Server 2008。

希望本文对于大家认识EDP和理解Windows的安全机制有所帮助。

相关文档
最新文档