除超频还能玩啥?全面解读CPU附加技术
二、CPU防病毒技术
提到防病毒问题,我们首先联想到的是一系列的杀毒软件,但是相信有不少人并不知道,其实CPU硬件本身也有防病毒技术。
曾几何时,AMD和Intel都在为各自的CPU推广一个概念:硬件防毒。在AMD和Intel的64bit处理器中,所谓的硬件防毒也成了了标准配置,CPU的硬件防毒功能是如何实现的呢?它真的有用么?是不是买了具有硬件防毒功能的CPU,就不需要防毒软件了?因为经常有朋友这么询问,所以在CPU技术应用方面文章也加入了这一项目。
CPU防毒须知:什么是缓冲区溢出
要明白CPU硬件防毒的功能,首先我们必须对缓冲区溢出做个了解。对于电脑用户来说,“缓冲区溢出”一定都不会太陌生。在使用电脑过程中相信大家都遇到过“0x00xxxxxx指令引用的0x00000000内存。该内存不能为read”错误,而这实际上就是最基本的缓冲区溢出报告。
系统中常见的缓冲区溢出问题
那为什么会出现这样的错误呢?原来在计算机内部,等待处理的数据一般都被放在内存的某个临时空间里(Buffer缓冲区),其大小一般是由操作系统或是程序的相关函数来定义的。如果应用程序向缓冲区输入的数据超出了缓冲区本身的容量,而程序又没有检查缓冲区边界的功能,那么就会发生缓冲区溢出。如果溢出部分被写入了其他缓冲区,将其他内存区域的数据等给覆盖,那么这就有可能导致某个应用程序乃至操作系统崩溃。而更坏的结果是,如果相关数据里包含了恶意代码,那么溢出的恶意代码就会改写应用程序返回的指令,使其指向包含恶意代码的地址,使其被CPU编译而执行,而这可能发生“内存缓冲区溢出攻击”,名噪一时的“冲击波”、“震荡波”等蠕虫病毒就是采用这种手段来攻击电脑的。
对于缓冲区溢出攻击,防毒杀毒软件虽然也可以处理,但也只能是“亡羊补牢”,而操作系统和应用软件的漏洞又是难以预测的,随时可能被利用,引来缓冲区溢出攻击。在这种情况下,预防缓冲区溢出攻击应该从硬件层次着手,开始成立许多IT厂商的共识,于是大家俗称的CPU硬件防毒功能应运而生了。
将CPU硬件防毒称之为“防缓冲区溢出攻击”更为恰当
对于各自的“硬件防毒”技术,AMD将其称之为Ehanced Virus Protection(EVP),而Intel则命名为Excute Disable Bit(EDB)。但不管叫什么,它们的原理都是大同小异,而严格来说,目前各个CPU厂商在CPU内部集成的防毒技术不能称之为“硬件防毒”。首先,无论是Intel的EDB还是AMD的EVP,它们都是采用硬软结合的方式工作的,都必须搭配相关的操作系统和软件才能实现;其次,EDB和EVP它们都是为了防止因为内存缓冲区溢出而导致系统或应用软件崩溃的,而这内存缓冲区溢出有可能是恶意代码(病毒)所为,也有可能是应用程序设计的缺陷所致(无意识的),因此我们将其称之为“防缓冲区溢出攻击”更为恰当些。
CPU的防缓冲区溢出攻击实现的原理
我们知道,缓冲区溢出攻击最基本的实现途径是向正常情况下不包含可执行代码的内存区域插入可执行的代码,并欺骗CPU执行这些代码。而如果我们在这些内存页面的数据区域设置某些标志(No eXecute或eXcute Disable),当CPU读取数据时检测到该内存页面有这些标志时就拒绝执行该区域的可执行指令,从而可防止恶意代码被执行,这就是CPU的防缓冲区溢出攻击实现的原理.
而对于开启了EDB或EVP功能的计算机来说,一般也就可实现数据和代码的分离,而在内存某个页面将被设置为只做数据页,而任何企图在其中执行代码的行为都将被CPU所拒绝。当然,开启EDB、EVP功能的CPU时无法独立完成标注不可执行代码内存页面以及进行相关检测防治工作的,它还需要相关操作系统和应用程序的配合。
操作系统的支持必不可少
目前,我们常用的操作系统都提供了对EDB、EVP技术的支持。那么只要你启用操作系统中的DEP(Data Execution Protection数据执行保护)功能即可为你的电脑提供比较全面的防缓冲区溢出攻击功能(DEP是可以独立运行的,并也可帮助防御某些类型的恶意代码攻击,但要充分利用DEP可以提供的保护功能,就需要CPU的配合了)。设置方法是依次打开“控制面板”“系统”“高级”“性能设置”我们就可以打开“数据执行保护”选项,同时也可以看到你的CPU支不支持硬件DEP。
VISTA系统的DEP设置选项
DEP可单独或和兼容的CPU一起将内存的某些页面位置标注为不可执行,如果某个程序尝试从被保护的位置运行代码,将会被CPU拒绝同时DEP会关闭程序并通知用户,从而在一定程度上保障用户电脑的安全。
DEP技术还在向前发展
因为DEP还是一项发展较晚的项目,并且应用时间不长,因此在目前来说可能还存在着一些兼容性的问题。我们知道,在32bit操作系统下,需要CPU打开PAE(Physical Address Extensions物理地址扩展)才能实现对DEP功能的硬件支持。PAE虽然使寻址空间扩展到了64bit,不过支持的物理内存大小依然在4 GB以内。如果硬件设备并不支持64bit寻址能力或者驱动程序认为在PAE开启的模式下需要超过4GB的物理内存,就有可能导致驱动错误;而对于有些程序来说,是采用实时生成代码方式来执行动态代码的,而生成的代码就有可能位于标记为不可执行的内存区域,这就有可能导致DEP将其检测为非法应用程序而将其关闭。而这些都还有赖于硬件和软件厂商的相互配合解决,当然,这些都是需要的时间。因此,DEP、EDB、EVP等技术都还在向前发展。
建议:首先CPU防毒并不等同于杀毒软件的功效,因为它是为了防止因为内存缓冲区溢出而导致系统或应用软件崩溃的,而这内存缓冲区溢出有可能是恶意代码(病毒)所为,并不拥有类似防止木马或是其他类型病毒的功能,所以我们开启CPU防毒功能之外,还要安装最新的杀毒软件,这才是双保险,目前可以开启CPU防毒我们常用的系统是XP SP2/VISTA。