数据执行保护技术(Data Execution Prevention,以下简称 DEP)是 WinXP SP2和2003 sp1新增的一项功能。DEP 简单地说可以看作操作系统底层的安全防护机制,本身不具备对病毒检测的功能。但如果有利用漏洞溢出包括本地溢出的病毒发作时,DEP 可以进行防护作用。
数据执行保护_数据执行保护(DEP) -概述:
数据执行保护技术(Data Execution Prevention,以下简称 DEP)是winxp sp2和 2003 sp1 新增的一项功能。DEP 简单地说可以看作操作系统底层的安全防护机制,本身不具备对病毒检测的功能。但如果有利用漏洞溢出包括本地溢出的病毒发作时,DEP 可以进行防护作用。
在 WinXP SP2 和 2003 sp1 的系统上,在控制面板里打开“系统”属性,在【高级】选项卡下的“性能:视觉效果、处理器计划、内存使用和虚拟内存”里面点击【设置】,接着在“性能选项”中选择【数据执行保护】选项卡,即可设置 DEP 功能。
DEP 技术也需要硬件设备的支持,如果要完整地支持 DEP 必须拥有支持 DEP 技术的 CPU,目前只有 Intel 的“安腾”系列、Pentium 4 J 支持,以及 AMD 的 Athlon 64 系列、Opteron 支持。硬件不支持 DEP 的计算机使用 WinXP SP2 或 2003 sp1 只能用软件方式模拟 DEP 的部分功能。
数据执行保护(DEP)是MicrosoftWindowsXPServicePack2(SP2)支持的一种处理器功能,它禁止在标记为数据存储的内存区域中执行代码。此功能也称作“不执行”和“执行保护”。当尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码。
数据执行保护(DEP)有助于防止病毒和其他安全威胁造成破坏,它们的攻击方法是从只有Windows和其他程序可以使用的内存位置执行恶意代码。此类威胁使用以下方法造成破坏:它接管某个程序正在使用的一个或多个内存位置,然后进行传播并破坏其他程序、文件甚至您的电子邮件联系方式。
与防火墙或防病毒程序不同,DEP不能阻止在您的计算机上安装有害程序。但是,它会监视您的程序,以确定它们是否安全地使用系统内存。为此,DEP软件会单独或与兼容的微处理器一起将某些内存位置标记为“不可执行”。如果某个程序尝试从受保护的位置运行代码,DEP将关闭该程序并通知您。即使该代码不是恶意代码,也会执行此操作。
数据执行保护_数据执行保护(DEP) -分类(版本):
64位Windows版本上的DEP
64位处理器上的64位Windows版本可以在64位模式下运行程序。无论处理器的结构如何,64位Windows版本的内核模式DEP均适用于堆栈、页面缓冲池和会话池。
默认情况下,在WindowsXPSP2中启用DEP,并且无法将其禁用。64位应用程序将无法从堆栈或默认进程堆中运行。对于需要分配可执行内存的应用程序,可使用带有某个PAGE_EXECUTE*内存属性的VirtualAlloc()来运行。
32位Windows版本上的DEP
用户模式DEP
在不久的将来,许多运行Windows和Windows兼容程序的计算机都将使用运行32位Windows版本的32位处理器。但是,AMDOpteron和Athlon-64等新的处理器同时支持32位和64位操作模式。(32位操作模式是旧模式;而64位操作模式是本机模式。)
同时支持32位和64位操作模式的新处理器可以在32位操作系统和32位应用程序环境中运行,在启用物理地址扩展(PAE)模式后,它们还可以使用DEP。
我们将探讨分别为每个32位应用程序禁用或启用DEP的方法。默认情况下,为64位应用程序启用DEP。DEP异常将导致Windows系统上出现状态代码STATUS_ACCESS_VIOLATION(0xc0000005)。在大多数进程中,这是一个未经处理的异常,并导致进程终止。
内核模式DEP
对于用户模式和内核模式,DEP的工作原理相同。在内核模式下,不能分别为每个驱动程序启用或禁用内存区域DEP。默认情况下,在32位Windows版本上,DEP仅适用于堆栈。在64位Windows版本上,DEP适用于堆栈、页面缓冲池和会话池。内核模式下的访问冲突将导致出现Bugcheck0x000000FC:ATTEMPTED_EXECUTE_OF_NONEXECUTE_MEMORY。
数据执行保护_数据执行保护(DEP) -兼容性问题
应用程序和驱动程序都可能会发生DEP兼容性问题。
有些应用程序行为可能与DEP不兼容。执行动态代码生成(如实时代码生成)的应用程序以及不使用“执行”权限明确标记生成的代码的应用程序与DEP之间可能存在兼容性问题。
试图违反DEP的应用程序将会出现异常,并显示状态代码STATUS_ACCESS_VIOLATION(0xc0000005)。如果应用程序需要可执行内存,则必须在相应的内存中明确设置此属性,方法是在Virtual*内存分配函数的内存保护参数中指定PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE或PAGE_EXECUTE_WRITECOPY。
关闭数据执行保护:
使用记事本打开c:boot.ini文件。如果有只读属性,需要先将只读属性去掉。
可以找到multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Home Edition" /noexecute=optin /fastdetect
把/noexecute=optin改为/execute 即可。即改为:
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Home Edition" /execute /fastdetect
/noexecute=optin 这是默认开关。启用 DEP。
/execute - 禁用 DEP。
/noexecute参数的取值可以是AlwaysOn、AlwaysOff、OptIn 、OptOut中的任一个。当你启用DEP(系统数据执行保护)的时候,/noexecute=optin;关闭DEP,/noexecute=optout
/noexecute=AlwaysOn时,便将整个系统置于 DEP 保护范围以内。在这种状态下,可能很多程序都不能运行,而且报错的提示还不一样。
/noexecute=AlwaysOff时,相当于关闭了DEP和EVP功能,凡是被其阻止的程序都能正常运行。我们可在这种状态下暂时运行某一程序,但一定要注意网络安全,工作完成后马上恢复。
添加例外程序:
单击“开始”,然后单击“控制面板”。
在经典视图中,双击“系统”。
单击“高级”选项卡,单击“性能”,然后单击“设置”。
在“性能选项”对话框中,单击“数据执行保护”选项卡。
选择“为所有程序和服务启用 DEP,但我选择的程序和服务除外:”,然后单击“添加”。
在“打开”对话框中,找到并选择该应用程序,然后单击“打开”。
单击“应用”,然后单击“确定”。将出现一个提示,通知您必须重新启动系统后设置才能生效。单击“确定”。