ie数据执行保护
发布时间:2019-11-01 00:37:40
发布时间:2019-11-01 00:37:40
ie8数据执行保护(DEP)问题
ie8使用过程中,总是容易打不开页面,一旦刷新,就提示数据执行保护。
根据电脑提示,就更改数据执行保护(DEP)设置,将ie8排除在外,可设置几次都不起作用,还曾以为自己将DEP设置错误。
今天痛下决心,要将其解决掉。经过上网搜索,发现是兼容性视图问题。几天的更改步骤:
1.将ie安全设置改为中;
2.Internet选项-高级-重置;
3.工具-兼容性视图设置-显示所有网站。
问题解决。更改过后会发现部分网页(原来打开有问题的网页)显示有变化。
MS提示,该问题可能只与兼容性视图设置(上述第3项)有关,以后遇到类似问题的朋友可以先更改第3项设置,看问题是否解决,再决定是否更改前两项。建议的设置顺序改为3-2-1。产生这个问题的原因是ms从IE标准网页向国际标准W3C过渡引起的。
数据执行保护(DEP)
数据执行保护可帮助保护您的计算机免受病毒和其他安全威胁的破坏。这些病毒和威胁尝试从受保护的内存位置运行(执行)恶意代码来发起攻击,而只有Windows和其他程序才应使用这些位置。这种威胁通过接管程序正在使用的一个或多个内存位置来执行破坏操作。之后,它会进行传播,从而破坏其他程序、文件乃至您的电子邮件联系人。
与防火墙或防病毒程序不同,DEP无法帮助防止有害的程序安装在计算机中,而是对您的程序进行监视,确定它们是否能够安全地使用系统内存。要执行监视操作,DEP软件既可以独立运行,也可以与兼容微处理器协作,将某些内存位置标记为“不可执行”。如果程序尝试从受保护的内存位置运行代码(无论是否为恶意代码),DEP均将关闭程序并向您发送通知。
DEP可以利用软件和硬件支持。要使用DEP,您的计算机必须运行MicrosoftWindowsXPServicePack2(SP2)或更高版本,或者WindowsServer2003ServicePack1或更高版本。DEP软件独立运行时可帮助防御某些类型的恶意代码攻击,但要充分利用DEP可以提供的保护功能,您的处理器必须支持“执行保护”功能。执行保护是一种基于硬件的技术,用于将内存位置标记为“不可执行”。如果您的处理器不支持基于硬件的DEP,则最好将其升级为能够提供执行保护功能的处理器。
再次运行被DEP关闭的程序是否安全?
安全,但前提是您要针对该程序启用DEP。Windows可继续检测企图从受保护内存位置执行代码的尝试,并能够帮助防止攻击。如果启用DEP后程序无法正常运行,您可从软件发行商处获取与DEP兼容的程序版本,从而降低安全风险。有关DEP关闭程序后应如何操作的详细信息,请单击“相关主题”。
如何确定我的计算机上是否启用了DEP?
要打开“系统属性”,请依次单击“开始”、“控制面板”、“性能和维护”,然后单击“系统”。
单击“高级”选项卡,之后单击“性能”下的“设置”。
单击“数据执行保护”选项卡。
注意
默认情况下,DEP只针对基本Windows操作系统程序和服务启用。要使用DEP帮助保护其他程序,请选择“为下列程序之外的所有程序启用DEP”。
概要
MicrosoftWindowsXPServicePack2使用一项新的数据执行保护(DEP)功能,可禁止执行数据页中的代码。当尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码。
简介
数据执行保护(DEP)是MicrosoftWindowsXPServicePack2(SP2)支持的一种处理器功能,它禁止在标记为数据存储的内存区域中执行代码。此功能也称作“不执行”和“执行保护”。当尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码。
更多信息
数据执行保护(DEP)有助于防止病毒和其他安全威胁造成破坏,它们的攻击方法是从只有Windows和其他程序可以使用的内存位置执行恶意代码。此类威胁使用以下方法造成破坏:它接管某个程序正在使用的一个或多个内存位置,然后进行传播并破坏其他程序、文件甚至您的电子邮件联系方式。
与防火墙或防病毒程序不同,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的应用程序将会出现异常,并显示状态代码STATUS_ACCESS_VIOLATION(0xc0000005)。如果应用程序需要可执行内存,则必须在相应的内存中明确设置此属性,方法是在Virtual*内存分配函数的内存保护参数中指定PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE或PAGE_EXECUTE_WRITECOPY。
有关更多信息,请参阅下面的MSDN文章:
(c:\iknow\docshare\data\cur_work\_blank)
?驱动程序兼容性
驱动程序与DEP的兼容性问题主要是指由PAE模式引起的兼容性问题。DEP本身可能与以下驱动程序之间存在兼容性问题:执行代码生成的驱动程序或使用其他方法实时生成可执行代码的驱动程序。始终为64位Windows版本上加载的驱动程序启用DEP支持。尽管许多创建可执行代码的驱动程序在WindowsXPSP2中可能已得到修复,但是不能保证所有驱动程序都已更新。
不过,因为使用这些方法的驱动程序非常少,所以DEP本身不会产生很多驱动程序兼容性问题。大多数驱动程序兼容性问题与在32位系统上运行PAE模式有关。如果启用PAE模式,有些驱动程序可能无法加载,这是因为该设备可能无法进行64位寻址,或者驱动程序可能假定PAE模式需要超过4GB的RAM。这些驱动程序认为,当它们处于PAE模式时,它们将始终接收64位地址,并认为它们(或其设备)无法解释该地址。
其他驱动程序可通过直接修改系统页表项,以便在PAE模式下进行加载,但这会导致系统不稳定。这些驱动程序需要32位页表项,但在PAE模式下它们收到的却是64位页表项。驱动程序与PAE之间最大的兼容性问题与直接内存访问(DMA)传输和映射寄存器分配有关。许多支持DMA的设备(通常是32位适配器)都无法进行64位物理寻址。当设备在32位模式下运行时,它可以对所有物理地址空间进行寻址。
在PAE模式下,数据可以位于大于4GB的物理地址中。在此情况下,为使具有这些限制的设备能够正常工作,WindowsXPSP2通过提供由映射寄存器指示的32位地址,为DMA事务提供双缓冲处理。设备可以执行到32位地址的DMA事务,而且内核将内存复制到为驱动程序提供的64位地址。
当系统在禁用PAE的情况下运行时,32位设备的驱动程序根本不需要实际内存来支持它们的映射寄存器。这意味着,不需要进行双缓冲处理,因为32位地址空间中包含所有设备和驱动程序。根据在基于x86和基于x64的计算机上对32位设备驱动程序进行的测试,大多数经过客户端测试并支持DMA的驱动程序都需要无限制的映射寄存器。
为限制兼容性问题,WindowsXPSP2对硬件抽象层(HAL)进行了更改以模拟32位HALDMA行为。修改后的HAL使系统在PAE模式下运行时可以具有无限制的映射寄存器。另外,内核内存管理器忽略任何大于4GB的物理地址。
由于对HAL和内存管理器进行了这些更改,我们预计运行WindowsXPSP2且支持DEP的系统上的设备驱动程序兼容性问题将会降到最低。
开发人员备注
需要可执行内存区域的应用程序在分配内存时,必须使用PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE或PAGE_EXECUTE_WRITECOPY属性。另外,应用程序不能从默认进程堆或堆栈执行。
大多数执行与DEP不兼容的操作的应用程序必须进行更新,以便与DEP保持兼容。如果某个应用程序从专用堆分配可执行内存,则必须确保该堆内存中设置了EXECUTE标志。该应用程序可以使用VirtualAlloc应用程序编程接口(API)分配具有适当保护设置的内存。
如果应用程序不从专用堆分配可执行内存,则必须对其进行修改以使其从专用堆分配可执行内存。该应用程序必须使用VirtualAllocAPI创建此堆,并且至少为该内存指定EXECUTE标志。生成的任何代码必须放在该可执行堆中。
在生成可执行代码后,我们建议您为该应用程序设置内存保护,以禁止通过VirtualProtectAPI对该堆进行写访问。该措施将为进程地址空间的那些可执行区域提供更多保护。
配置和疑难解答
与数据执行保护支持有关的故障的症状包括:在启用DEP时尝试从内存执行的应用程序中发生访问冲突。在此情况下,将出现一个对话框,指示应用程序因DEP而出现错误。该对话框包含与以下内容类似的消息:
数据执行保护
Windows安全功能检测到一个问题,并关闭了此程序。
名称:应用程序名称
发行商:应用程序发行商
数据执行保护帮助保护免受病毒和其他安全威胁的破坏。它是如何工作的?
(后跟“高级”和“确定”按钮。)
如果DEP是导致应用程序出现错误的原因,建议您与应用程序供应商取得联系,以确定是否有可用的更新,以使应用程序在启用DEP时能够正常运行。要解决这些问题,建议您安装此更新。
在单击“确定”后,将出现一个标准的Windows错误报告提示,并提供一个发送错误报告的选项。还可以通过“单击此处”选项查看收集了哪些信息。
在错误报告界面上单击“单击此处”链接后,将出现详细信息界面。在该数据的“错误签名”部分,您可以查看是否将此错误标识为“事件类型:BEX。BEX指示与DEP相关的错误。
此界面还提供其他信息,这些信息主要来自一些异常参数:参数数据
1应用程序名称
2应用程序版本
3应用程序时间戳
4模块名称
5模块版本
6模块时间戳
7模块偏移
8异常代码(c0000005=访问冲突、c0000409=缓冲区溢出)
在初始界面上,您还可以单击“高级”来访问DEP配置设置。您可以使用这些设置为出现错误的应用程序添加例外项。
“数据执行保护”对话框提供以下三个选项:?为所有程序启用DEP(推荐)
?关闭DEP(不推荐)
?帮助保护除下列程序之外的所有程序:
通过选择其中一个选项,您可以排除一个或多个应用程序,或者为整个计算机配置DEP设置。如果设置“关闭DEP”选项,则会为当前运行的Windows安装的boot.ini配置文件添加一个开关。boot.ini开关如下所示:?/noexecute—这是默认开关。启用DEP。
?/execute—它禁用DEP。
注意:建议您不要全局性地禁用DEP。这会使计算机处于不太安全的状态。
也可以在“系统”属性中访问这些DEP设置。
如果没有适用于您的应用程序的更新,请按照下列步骤操作以访问和配置DEP配置设置:1.在应用程序出现错误时,单击“高级”。
2.在“数据执行保护”对话框中,选择“帮助保护除下列程序之外的所有程序:”
3.单击应用程序旁边的复选框,然后单击“应用”。
4.这时会出现一个提示,告诉您必须重新启动系统。单击“确定”。
5.再次单击“确定”,然后重新启动系统。
也可以在“系统”属性中执行此过程:1.单击“开始”,然后单击“控制面板”。
2.在经典视图中,双击“系统”。
3.单击“高级”选项卡,单击“性能”,然后单击“设置”。
4.在“性能选项”对话框中,单击“数据执行保护”选项卡。
5.选择“为所有程序和服务启用DEP,但我选择的程序和服务除外:”,然后单击“添加”。
6.在“打开”对话框中,找到并选择该应用程序,然后单击“打开”。
7.单击“应用”,然后单击“确定”。将出现一个提示,通知您必须重新启动系统后设置才能生效。单击“确定”。
参考资料:c:\iknow\docshare\data\cur_work\_blank
关闭数据执行保护:
使用记事本打开c:\boot.ini文件。如果有只读属性,需要先将只读属性去掉。
可以找到multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindowsXPHomeEdition"/noexecute=optin/fastdetect
把/noexecute=optin改为/execute即可。即改为:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindowsXPHomeEdition"/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,但我选择的程序和服务除外:”,然后单击“添加”。
在“打开”对话框中,找到并选择该应用程序,然后单击“打开”。
单击“应用”,然后单击“确定”。将出现一个提示,通知您必须重新启动系统后设置才能生效。单击“确定”。
您的操作系统如果是WINXPSP2时,系统自带的数据执行保护功能,可能会和词霸全系列产品发生冲突,请您点击以下地址下载该程序,将下载的文件xdictgrb.dll替换词霸安装目录下的同名文件即可轻松解决这个问题。c:\iknow\docshare\data\cur_work\_blank网址:“c:\iknow\docshare\data\cur_work\_blank”。
另外还可以尝试一下手工操作(英文版系统请参考括号后内容),在控制面板(ControlPanel)-系统(System)-高级(Advanced)-性能(Performance)-设置(Setting)-数据执行保护(DEPDataExecutionPrevention)-为除下列显示程序之外的所有程序和服务启用数据执行保护(TurnonDEPforallprogramsandservicesexceptthoseIselect)-添加(add)-文件名称(Filename)输入您的系统安装目录如Windows下的explorer.exe”,选择打开,在弹出的提示和警告中点击确定(OK),显示为“WindowsExplorer”-同样步骤添加“系统安装目录如Windows下的System32目录中的rundll32.exe”,显示为“Runadllasanapp”,一路点击确定(OK)后重新启动即可。
--------------------------------------------------------------------------------------------
需要对C:\boot.ini文件进行修改,这是系统文件,记得在文件夹设置里面让他显示出来。然后用记事本来对它进行编辑,找到以multi(0)disk(0)开头的条目,在那一行的结尾应该是/fastdetect选项,如果你安装了SP2,就还能看到/noexecute选项,这正是DEP生效的标志。你可以将/noexecute改为/execute,然后重新启动机器。这样就可以关闭数据执行保护(DEP)机制