除超頻還能玩啥?全面解讀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。
關注我們


