关于物理地址扩展

上传人:ji****72 文档编号:37628529 上传时间:2018-04-20 格式:DOC 页数:7 大小:61KB
返回 下载 相关 举报
关于物理地址扩展_第1页
第1页 / 共7页
关于物理地址扩展_第2页
第2页 / 共7页
关于物理地址扩展_第3页
第3页 / 共7页
关于物理地址扩展_第4页
第4页 / 共7页
关于物理地址扩展_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《关于物理地址扩展》由会员分享,可在线阅读,更多相关《关于物理地址扩展(7页珍藏版)》请在金锄头文库上搜索。

1、数据执行保护数据执行保护数据执行保护的作用是什么?数据执行保护的作用是什么?数据执行保护 (DEP) 是一组硬件和软件技术,用来对内存执行附加检查以帮助防止恶意代码的入侵。在 Windows XP SP2 中,由硬件和软件强制执行 DEP。硬件强制的硬件强制的 DEP硬件强制的 DEP 将一个进程中所有内存位置均标记为非可执行,除非该位置明确包含可执行代码。有一类攻击程序企图在非可执行的内存位置中插入代码并执行代码。通过截取这些代码并产生一个异常,数据执行保护有助于防范这些攻击。硬件强制的 DEP 依靠处理器硬件标记内存,使内存带有一个属性,表明不应该执行此处的代码。数据执行保护以每个虚拟内存

2、页面为基础发挥作用,通常会修改页表项 (page table entry - PTE) 中的一个数据位,对内存加以标记。具体的 DEP 硬件实现和虚拟内存页的标记方式会根据处理器架构的不同而有所变化。但是,从一个使用相应属性集标记的页面上执行代码,支持硬件强制 DEP 功能的处理器将会产生一个异常。Advanced Micro Devices (AMD) 和 Intel Corporation 都已定义并推出了针对数据执行保护的 Windows-compatible(兼容)架构。 从 Windows XP Service Pack 2 开始,32 位版本的 Windows 开始使用由 AMD

3、定义的非执行页面保护 (NX) 处理器功能或由 Intel 定义的执行禁用位 (Execute Disable bit) 功能。要使用这些处理器功能,处理器必须以“物理地址扩展”(PAE) 模式运行。64 位版本的 Windows XP 使用 64 位扩展上的 NX 处理器功能,以及 IPF 处理器上访问权限页表项 (PTE) 字段中的某些值。可以期望,所有未来的 32 位和 64 位处理器都支持硬件强制实施的数据执行保护功能。Microsoft 将继续与处理器制造商合作促进 DEP 技术的应用和发展。 软件强制的软件强制的 DEPWindows XP SP2 中已经添加了另一组数据执行保护的

4、安全检查。这些检查功能也称为软件强制的 DEP,旨在降低 Windows 异常处理机制的使用。软件强制的 DEP 能够在可运行 Windows XP SP2 的任何处理器上运行。默认情况下,软件强制的 DEP 仅保护有限的系统二进制文件,而不管处理器的硬件强制 DEP 功能如何。此功能适用于哪些用户?此功能适用于哪些用户?应用程序和驱动程序开发人员应该了解数据执行保护以及在一个支持平台上运行软件所应具备的条件。执行实时 (just-in-time - JIT) 代码生成,或从默认进程堆栈或堆执行内存的应用程序应对 DEP 的要求加以认真对待。我们鼓励驱动程序开发人员重视支持硬件强制数据执行保护

5、的平台上的 PAE 模式。在 Windows XP Service Pack 2 系统中 PAE 模式的行为已发生变更,以便改善驱动程序的兼容性。Windows XP Service Pack 2 中对此功能添加了哪些新功能?中对此功能添加了哪些新功能?32 位版本的位版本的 Windows 和应用程序中的数据执行保护和应用程序中的数据执行保护详细说明详细说明硬件强制的硬件强制的 DEP尽管有几点不同,数据执行保护的整体行为在 Windows 的 32 位版本和 64 位版本上完全相同。为了向应用程序和驱动程序的开发人员提供一致性,内存保护模型(包括数据执行保护)被设计为在 32 位和 64

6、位版本的 Windows 上具有相同的行为。应用程序开发人员应了解用户模式中的 DEP 行为。用户模式下的一个 DEP 异常会导致 Windows 系统上的一个 STATUS_ACCESS_VIOLATION (0xc0000005)。ExceptionInformation 的第一个参数(位于 EXCEPTION_RECORD 结构中)包含了所发生的访问违例的类型。如果 ExceptionInformation0 中值为 8,说明访问违例是一个执行违例。在大多数进程中,STATUS_ACCESS_VIOLATION 异常将是一个无法处理的异常,会导致进程终止。DEP 也适用于内核模式的驱动程

7、序。内核模式中内存区域的 DEP 不能有选择地启用或禁用。在 32 位版本的 Windows 中,数据执行保护默认情况下应用于堆栈。这和 Windows 64 位版本中的内核模式 DEP 不同,在 64 位版本中,堆栈、页面缓冲池以及会话池已经采用了数据执行保护。如果启用了 DEP,不允许设备驱动程序从堆栈中执行代码。内核模式中的 DEP 访问违例会导致一个检测错误 0xFC:ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY软件强制的软件强制的 DEP软件强制的 DEP 对 Windows 中的异常处理机制执行额外的检查。如果程序的图像文件是使用安全结构异常处理 (S

8、afeSEH) 功能建立的,则软件强制的 DEP 将确保在调度异常之前,在图像文件中的函数表中注册了异常处理程序。如果程序的图像文件不是使用 SafeSEH 建立的,则软件强制的 DEP 将确保在调度异常之前,位于内存区域中的异常处理程序已经标记为可执行。为什么此更改非常重要?它有助于缓解哪些威胁?为什么此更改非常重要?它有助于缓解哪些威胁?数据执行保护的主要好处在于:它有助于防止代码从数据页(如默认堆、各种堆栈以及内存池)中被执行。在系统正常的操作中,代码通常不会从默认的堆或堆栈中执行。硬件强制的 DEP 将检测从这些位置运行的代码,并在代码被执行时产生一个异常。如果异常没有被处理,进程将终

9、止。在内核模式下执行受保护内存中的代码会导致一个检测错误。检测错误会导致进程终止或系统失败,这似乎不是理想的用户体验,但这有助于防止恶意代码的执行。防止恶意代码在系统内被执行可以阻止系统受损或恶意代码的传播,这些恶意代码产生的有害影响远远大于由检测错误导致的进程终止的影响。DEP 有助于缓解某类安全性入侵。尤其是,如果病毒或其他攻击将额外的代码插入到进程中并试图执行所插入的代码,则数据执行保护可以防止这种行为。在支持 DEP 的系统中,执行被插入的代码会导致一个异常。软件强制的 DEP 有助于降低 Windows 异常处理机制的使用。DEP 的另一个好处与应用程序和驱动程序开发人员的良好的软件

10、工程经验以及最佳实践相关。在没有明确地将页标记为可执行的情况下,数据执行保护可以强制开发人员避免执行页面以外的代码。哪些功能发生了变化?哪些功能发生了变化?应用程序兼容性应用程序兼容性某些应用程序行为可能和数据执行保护不兼容。执行动态代码生成(例如实时代码生成)的应用程序,以及不能将生成的代码明确标记为可执行代码的应用程序可能会出现与数据执行保护不兼容的问题。对于不是使用 SafeSEH 建立的应用程序而言,其异常处理程序必须位于可执行的内存区域中。试图违反 DEP 的应用程序会收到一个异常,状态代码为 STATUS_ACCESS_VIOLATION (0xC0000005)。如果某应用程序需

11、要可执行内存,那么它必须在相应的内存上明确设置该属性,方法是:在 Virtual* 内存分配函数的内存保护参数中指定 PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE 或 PAGE_EXECUTE_WRITECOPY。使用 malloc() 和 HeapAlloc() 函数分配的堆是不可执行的。驱动程序兼容性驱动程序兼容性驱动程序与数据执行保护的兼容性问题主要集中在 PAE 模式引发的兼容性问题上。注意注意 仅在具有支持硬件强制 DEP 的处理器的系统上才需要 PAE。DEP 自身可能会与执行代码生成的驱动程序或使用其他技术实时生成可执

12、行代码的驱动程序产生兼容性问题。DEP 对于在 Windows 64 位版本上加载的驱动程序来说是“始终启用”的,所以具有上述行为的许多驱动程序都应该进行修正,但是并不能保证所有这些驱动程序都已经进行了更新。不过,只有很少的驱动程序使用了这些技术,而且我们也不希望 DEP 本身引起大量的驱动程序兼容问题。对驱动程序兼容性的主要担心是在 32 位系统下运行物理地址扩展 (PAE) 模式。PAE 模式允许处理器寻址 4GB 以上的内存空间。PAE 内存分页和非 PAE 内存分页模式的主要区别是 PAE 模式要求的额外分页级别(3 级而非 2 级)。如果启用 PAE,那么有些驱动程序可能无法加载,因

13、为设备可能无法执行 64 位寻址或驱动程序可能认为 PAE 模式要求多于 4GB 的 RAM。此类驱动程序在 PAE 模式下应该始终接收 64 位地址,而且它们(或它们的设备)不能解释这种地址。在 PAE 模式下,通过直接修改系统页表项 (PTE),可以加载其他驱动程序,但会引起系统不稳定。这些驱动程序希望使用 32 位 PTE,但在 PAE 模式下却收到了 64 位 PTE。最大的驱动程序 PAE 兼容性问题涉及直接内存访问 (DMA) 传输和映射寄存器分配。许多支持 DMA 的设备(通常为 32 位适配器)都不能执行 64 位物理寻址。当在 32 位模式中运行时,设备可以在所有物理地址空间

14、中进行寻址。在 PAE 模式下,数据的物理地址可能大于 4GB 空间。在这种情况下,为了允许设备在这些限制条件下运行,Windows 2000 Server 家族产品(及后续产品)通过提供由一个映射寄存器指示的 32 位地址,为 DMA 事务提供了双倍缓冲。设备可以对 32 位地址执行 DMA 事务,而且内核会将内存复制到提供给驱动程序的 64 位地址。当系统在禁用 PAE 的情况下运行时,32 位设备的驱动程序永远不会要求真实内存支持它们的映射寄存器。这意味着双倍缓冲是不必要的,因为在 32 位地址空间中包含了所有的设备和驱动程序。根据在配备 64 位处理器的计算机上对 32 位设备展开的驱

15、动程序测试,可以认为,大多数接受测试和支持 DMA 的客户端驱动程序都期待获得无限制的映射寄存器。 为了减少兼容性问题,Windows XP Service Pack 2 中包括对硬件抽象层 (HAL) 的修改,模仿了 32 位 HAL 的 DMA 行为。当系统在 PAE 模式中运行时,更改后的 HAL 允许存在无限制的映射寄存器。此外,内核内存管理器会忽略所有大于 4GB 的物理地址。任何超出 4GB 范围的系统 RAM 在 Windows 中均变为不可寻址,并且在系统中不可用。通过将地址空间限制为 4GB,具有 32 位 DMA 总线管理能力的设备将不会看到地址大于 4GB 的事务。因为这

16、些修改去除了对事务进行双倍缓冲的需要,所以,它们可以避免某些驱动程序中与正确实现双倍缓冲支持有关的一类错误。对 HAL 和内存管理器进行这些修改之后,可将设备驱动程序兼容性在系统(运行 Windows XP Service Pack 2 且启用数据执行保护功能)中造成的影响降至最低。系统兼容性系统兼容性最后一个对 DEP 兼容性的担心来自于支持 PAE 模式的系统,即便是它们可能并不是针对大于 4GB 的物理内存所设计的。Microsoft 已经在测试中注意到,某些使用支持硬件强制 DEP 处理器的系统在 PAE 模式下运行,有时系统无法顺利引导或者出现其他稳定性问题。PAE 模式是利用 NX 处理器功能所必需的。因此,系统设计人员和固件工程师应该意识到,即使系统芯片组和固件可能没有设计为支持大于 4GB 的物理 RAM,但是系统可能运行在 PAE 模式下。特别值得关注的一项是系统固件,它可以解释页表项以确定由操作系统执行的指令。当处理器在 PAE 模式下运行时,页表项的长度会扩展到 64 位。系统设计人员和固件开发人员应该与处理器和芯片组制造商联系,以了解有关如何安全确定由操

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号