b2b的商业模式特点:数据执行保护DEP是什么意思,为什么有时说DEP保护,就不能上网了

来源:百度文库 编辑:高校问答 时间:2024/05/03 22:55:05

Data Execution Protection
应该知道缓冲区溢出漏洞吧,像冲击波、振荡波这种病毒就是利用缓冲区溢出进行攻击的。在Intel和AMD的新处理器中都通过硬件实现了对这些漏洞的根本防御,DEP就是通过软件的办法对它们进行防御。
DEP的原理就是防止在数据区域执行代码(一般缓冲区漏洞的利用方式),但是某些正常的程序也会用到类似的办法来保护自己,你可以将出现错误的程序添加到排除列表(一般不会出问题,默认只对系统服务采用DEP)。

DEP是数据执行保护。64位计算机和赛扬D支持硬件级的保护。一般的计算机可以用软件模拟。具体就是防止内存溢出。现在很多的攻击很多利用的就是内存溢出。所以DEP很大程度上可以防止溢出情况发生。总的说:数据执行保护 (DEP) 是一组硬件和软件技术,用来对内存执行附加检查以帮助防止恶意代码的入侵。
以下是微软的技术文档:数据执行保护
数据执行保护的作用是什么?
数据执行保护 (DEP) 是一组硬件和软件技术,用来对内存执行附加检查以帮助防止恶意代码的入侵。在 Windows XP SP2 中,由硬件和软件强制执行 DEP。

硬件强制的 DEP

硬件强制的 DEP 将一个进程中所有内存位置均标记为非可执行,除非该位置明确包含可执行代码。有一类攻击程序企图在非可执行的内存位置中插入代码并执行代码。通过截取这些代码并产生一个异常,数据执行保护有助于防范这些攻击。

硬件强制的 DEP 依靠处理器硬件标记内存,使内存带有一个属性,表明不应该执行此处的代码。数据执行保护以每个虚拟内存页面为基础发挥作用,通常会修改页表项 (page table entry - PTE) 中的一个数据位,对内存加以标记。

具体的 DEP 硬件实现和虚拟内存页的标记方式会根据处理器架构的不同而有所变化。但是,从一个使用相应属性集标记的页面上执行代码,支持硬件强制 DEP 功能的处理器将会产生一个异常。

Advanced Micro Devices™ (AMD) 和 Intel® Corporation 都已定义并推出了针对数据执行保护的 Windows-compatible(兼容)架构。

从 Windows XP Service Pack 2 开始,32 位版本的 Windows 开始使用由 AMD 定义的非执行页面保护 (NX) 处理器功能或由 Intel 定义的执行禁用位 (Execute Disable bit) 功能。要使用这些处理器功能,处理器必须以“物理地址扩展”(PAE) 模式运行。64 位版本的 Windows XP 使用 64 位扩展上的 NX 处理器功能,以及 IPF 处理器上访问权限页表项 (PTE) 字段中的某些值。

可以期望,所有未来的 32 位和 64 位处理器都支持硬件强制实施的数据执行保护功能。Microsoft 将继续与处理器制造商合作促进 DEP 技术的应用和发展。

软件强制的 DEP

Windows XP SP2 中已经添加了另一组数据执行保护的安全检查。这些检查功能也称为软件强制的 DEP,旨在降低 Windows 异常处理机制的使用。软件强制的 DEP 能够在可运行 Windows XP SP2 的任何处理器上运行。默认情况下,软件强制的 DEP 仅保护有限的系统二进制文件,而不管处理器的硬件强制 DEP 功能如何。

此功能适用于哪些用户?
应用程序和驱动程序开发人员应该了解数据执行保护以及在一个支持平台上运行软件所应具备的条件。执行实时 (just-in-time - JIT) 代码生成,或从默认进程堆栈或堆执行内存的应用程序应对 DEP 的要求加以认真对待。

我们鼓励驱动程序开发人员重视支持硬件强制数据执行保护的平台上的 PAE 模式。在 Windows XP Service Pack 2 系统中 PAE 模式的行为已发生变更,以便改善驱动程序的兼容性。

Windows XP Service Pack 2 中对此功能添加了哪些新功能?
32 位版本的 Windows 和应用程序中的数据执行保护
详细说明

硬件强制的 DEP

尽管有几点不同,数据执行保护的整体行为在 Windows 的 32 位版本和 64 位版本上完全相同。为了向应用程序和驱动程序的开发人员提供一致性,内存保护模型(包括数据执行保护)被设计为在 32 位和 64 位版本的 Windows 上具有相同的行为。

应用程序开发人员应了解用户模式中的 DEP 行为。用户模式下的一个 DEP 异常会导致 Windows 系统上的一个 STATUS_ACCESS_VIOLATION (0xc0000005)。ExceptionInformation 的第一个参数(位于 EXCEPTION_RECORD 结构中)包含了所发生的访问违例的类型。如果 ExceptionInformation[0] 中值为 8,说明访问违例是一个执行违例。

在大多数进程中,STATUS_ACCESS_VIOLATION 异常将是一个无法处理的异常,会导致进程终止。

DEP 也适用于内核模式的驱动程序。内核模式中内存区域的 DEP 不能有选择地启用或禁用。在 32 位版本的 Windows 中,数据执行保护默认情况下应用于堆栈。这和 Windows 64 位版本中的内核模式 DEP 不同,在 64 位版本中,堆栈、页面缓冲池以及会话池已经采用了数据执行保护。

如果启用了 DEP,不允许设备驱动程序从堆栈中执行代码。内核模式中的 DEP 访问违例会导致一个检测错误 0xFC:ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY

软件强制的 DEP

软件强制的 DEP 对 Windows 中的异常处理机制执行额外的检查。如果程序的图像文件是使用安全结构异常处理 (SafeSEH) 功能建立的,则软件强制的 DEP 将确保在调度异常之前,在图像文件中的函数表中注册了异常处理程序。

如果程序的图像文件不是使用 SafeSEH 建立的,则软件强制的 DEP 将确保在调度异常之前,位于内存区域中的异常处理程序已经标记为可执行。