原文链接:冷门但每天都用到的安全技术:数据执行保护
起因,有几个程序肯点旧,启动时弹出提示窗:OpenMem failed. Err=5,经过多次确定才能进入程序,有的不能使用程序。后来将这些32位程序,加入到DEP中,64位的程序加入不了DEP中,将虚拟内存,从C盘(固态硬盘)移到机械硬盘,做了这两步骤后,所有之前出问题的32位或者64位程序都正常使用了。
1. 数据执行保护概述
前面的文章谈谈著名的缓冲区溢出介绍过,缓冲区溢出存在的根本原因是系统无法分辨出内存中哪些是数据,哪些是执行的代码。而数据执行保护(Data Execution Prevention,以下简称 DEP)就是针对这一问题提出的解决技术。
DEP 能够自动在程序执行时将其可执行代码所占用的区域标记出来,支持 DEP 的 CPU 利用一种叫做“No execute 不执行”的技术识别标记出来的区域。如果发现当前执行的代码没有明确标记为可执行(例如程序执行后由病毒溢出到代码执行区的那部分代码),则禁止其执行,那么利用溢出攻击的病毒或网络攻击就无法利用溢出进行破坏了。因此DEP 简单地说可以看作操作系统底层的安全防护机制,本身不具备对病毒检测的功能,但如果有利用漏洞溢出包括本地溢出的病毒发作时,DEP 可以进行防护作用。
DEP技术也需要硬件设备的支持,如果要完整地支持 DEP 必须拥有支持 DEP 技术的 CPU,目前大部分CPU都支持。此外,需要启用硬件DEP,需在BIOS设置中将CPU Configuration下的Execute Disable Function设置为Enable,才可以打开CPU防御病毒的能力。如果 CPU 不支持 DEP,Windows 会以软件方式模拟出 DEP 的部分功能。
要确定计算机上是否启用了DEP,可打开“系统属性”,依次单击“开始→控制面板”,然后双击“系统”。单击“高级”选项卡,之后单击“性能”下的“设置”,单击“数据执行保护”选项卡。默认情况下,DEP只针对基本Windows操作系统程序和服务启用。要使用DEP帮助保护其他程序,需选择“为下列程序之外的所有程序启用DEP”。如果您的CPU支持DEP并具备相关的技术,则在该选项下面会显示“你的计算机处理器支持基于硬件的DEP。”,如果不支持,则显示“你的计算机处理器不支持基于硬件的DEP,不过,Windows能使用DEP软件防止一些类型的攻击。”,表明使用的是软件DEP。
DEP最早由微软推出,并从 WinXP SP2 和Windows 2003 sp1 开始新增这一功能。因此可能你平时很少听过,但实际上每天都在使用到它。
2.DEP设置
DEP有四种设置选项:
选择启用(Opt-In)。在此模式下DEP仅用于显式选择开启DEP 的进程。这是客户端操作系统的默认配置。选择不启用(Opt-Out)。在这个模式下,DEP是每个进程的默认配置,不需要使用DEP的进程应该显式标明。这是服务器操作系统的默认配置。始终开启(Always On)。无论程序是否与DEP兼容,所有进程都启用DEP。始终关闭(Always Off)。所有进程都不启用DEP。其中,前面两种选项可以通过上图中的操作界面设置。但如果想设置后面两种选项,需要通过配置相关文件。在Windows XP SP2 和Windows 2003 sp1中,是通过配置c:\boot.ini文件中的/noexecute值实现。
在之后的Windows版本,可使用微软提供的命令行工具bcdedit.exe来编辑BCD文件开关该功能。比如在命令行下执行命令“bcdedit /set nx alwaysoff”关闭DEP。而要开启所有服务和应用程序的DEP,则执行命令“bcdedit /set nx alwayson”。
注意,修改DEP值后,系统需要重启修改才生效。
3. 与DEP有关的故障
我们在日常经常遇到的几种程序执行错误都和DEP有关。首先在启用DEP时尝试从内存执行的应用程序中发生访问冲突。在此情况下,将出现一个对话框,指示应用程序因DEP而出现错误。该对话框包含与以下内容类似的消息:
另外一种与DEP有关的错误是BEX错误。
遇到此类问题,先从程序本身方面分析。如果是自己开发的程序,检查一下是否存在缓冲区溢出或内存泄漏的地方;如果是第三方的程序,可以找一下这些程序的更新补丁或最新版本,尝试安装是否能已经解决问题。如果还是有问题,那就只能设置DEP来解决,即将出问题的程序设置为不启用DEP。但有些应用程序或驱动程序的兼容性不强,即使在DEP中将其放行,它还是不能正常运行,这时就要始终关闭DEP了,兼容性问题虽然解决了,但也少了一堵安全保护的墙。
4. DEP常见问题
如果 DEP 已关闭程序,再次运行该程序是否安全?安全,但是仅当打开该程序的DEP,Window才可以继续检测那些从受保护的内存位置运行代码的尝试,这样有助于防止受到攻击。
如果 DEP 正在关闭作为 Windows 一部分的程序(如 svchost.exe 或 explorer.exe),我应该做什么?svchost.exe和explorer.exe程序是Windows操作系统的一部分。如果DEP关闭它们或其他Windows服务,则可能是由其他软件发行者创建的以及在Windows中运行的小程序(例如扩展程序)所导致的。如果最近安装了某个程序,并且注意到DEP关闭了基于Windows 的程序,请与软件发行者核对以查看是否有与DEP 兼容的更新版本可用,或者尝试卸载该程序。
设置DEP时遇到“您不能在64位可执行文件上设置DEP属性”这个没什么办法,系统就是不支持64位程序的设置。不过网上很多答案说是选择错了程序的路径,应该选择C:\Windows\SysWOW64\下的程序就可以设置成功,因为这才是64位的。这种说法是搞错了基本概念:在64位Windows里,SysWow64文件夹是用来存放32位Windows系统文件的地方,而System32文件夹则是用来存放64位程序文件的地方。
转载请保留原文链接:http://blog.hzzx3d.com/2737.html
© 版权声明
免责声明:本站的页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与我们联系(邮箱:3446525391@qq.com)删除或处理。稿件内容仅为传递更多信息之目的,不代表本网观点,也不代表本网站赞同其观点或证实其内容的真实性,更不对您的投资构成建议。
THE END