專利名稱::保護(hù)bios免于被病毒破壞的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種電腦固件(firmware)防護(hù)的方法,尤其是涉及一種防止電腦BIOS(basicinput/outputsystem,基本輸入輸出系統(tǒng))被病毒破壞的方法。電腦系統(tǒng)中最為關(guān)鍵的元件之一為引導(dǎo)(booting)用的固件,即BIOS,一般將其存于非易失性(non-volatile)的存儲器中。BIOS為一種可執(zhí)行代碼(executablecode),使得CPU能利用執(zhí)行如初始化(initialization)、由主存儲器載入操作系統(tǒng)的核心(kernel)以及例行I/O(input/output,輸入/輸出)功能等工作。當(dāng)電源打開時,CPU利用取出(fetch)存于BIOS中的指令碼以啟動電腦。BIOS的必須同時兼具兩種互為沖突的要求,即(I)BIOS必須被完好保護(hù),原因是如果BIOS被修改或破壞則整個系統(tǒng)便無法開機;(2)BIOS必須能被輕易修改,以準(zhǔn)許版本加入改進(jìn)功能或經(jīng)除錯后的更新(update)動作。通常BIOS可寫在EPPOM(erasableprogrammableread-onlymemory,可擦可編程化只讀存儲器)中,EPPOM具有用電流無法修改的好處,要修改EPPOM存儲的內(nèi)容,必須先將EPPOM從插槽移出,然后以紫外線常時間照射才能實現(xiàn)。因此寫在EPPOM中的BIOS可免于電腦病毒的侵害。但是反過來說,存于EPPOM的BIOS就不能隨時地升級更新。近來,由于電腦系統(tǒng)結(jié)構(gòu)不斷的推陳出新,BIOS是否能隨時更新變得相當(dāng)重要,因此現(xiàn)在的BIOS固件便多采用快閃存儲器(flashmemory)。然而,由于易于修改,BIOS快閃存儲器就容易受電腦病毒的破壤,一旦受到病毒的感染便會造成相當(dāng)嚴(yán)重的后果。典型的電腦病毒侵入,病毒碼將執(zhí)行一代碼序列(codesequence)以修改BIOS內(nèi)容,一旦BISO被不當(dāng)修改,受感染的可執(zhí)行代碼將進(jìn)一步散播至BIOS碼的其它區(qū)域或操作系統(tǒng)的核心。而且,由于BIOS是電腦系統(tǒng)開機后第一個被執(zhí)行的程序,先于任何系統(tǒng)或網(wǎng)絡(luò)掃毒軟件啟動之前,使得檢測與掃除以侵犯BIOS為主的病毒工作更加困難,尤其這種病毒常常能夠躲過掃毒軟件的掃描,而變得無法獲知其是否存在。現(xiàn)有對BIOS的保護(hù)大致上可分成兩種方式(1)采用硬件(H/W)保護(hù),即利用jumper(跨接線)或GPIO(GeneralPurposeI/O,通用型輸入/輸出)控制快閃存儲器Vcc12V的輸入信號,以防止快閃存儲器被寫入。這種方法雖然有不錯的保護(hù)效果,但操作并不方便,缺點是對病毒的防范及反應(yīng)略嫌消極;(2)采用軟件(S/W)保護(hù),一般常見方式即為S/W的保護(hù),對于有些快閃存儲器不支持上述的H/W保護(hù),會直接用對快閃存儲器下一組命令(command)的方式進(jìn)行防毒。然而這種方法的缺點是這組命令為快閃存儲器制訂的規(guī)格之一,因此很容易被病毒以軟件的方式解除保護(hù),如CIH病毒便可破解這種軟件保護(hù)。因此,本發(fā)明的目的在于提出一種保護(hù)BIOS免于被病毒破壞的方法,其利用快閃存儲器被寫入時的必要信號產(chǎn)生SMI(systemmanagementinterrupt,系統(tǒng)管理中斷),因此當(dāng)存于快閃存儲器的BIOS有寫入動作時,便能利用BIOS的SMI處理程序(handlerroutine)來防止病毒。根據(jù)上述發(fā)明目的提供的保護(hù)BIOS免于被病毒破壞的方法,其通過存有BIOS的一快閃存儲器與一芯片組的SMI事件來源輸入管腳形成連通,實現(xiàn)防止病毒寫入快閃快儲器,其步聚至少包括(a)執(zhí)行相關(guān)BIOS設(shè)定以匹配來自快閃存儲器的一必要信號WE#;(b)電腦CPU接收由芯片組發(fā)出的-SMI信號;(c)至BIOS的SMIhandlerroutine檢查SMI來源;(d)判定SMI來源為快閃存儲器被病毒寫入;以及(e)禁止病毒的寫入。其中步驟(a)還包括(a1)執(zhí)行BIOS啟動時的POST;(a2)初始化SMIhandlerroutine;(a3)對芯片組執(zhí)行相關(guān)設(shè)定,使快閃存儲器被寫入時芯片組能產(chǎn)生-SMI信號;(a4)設(shè)定I/OtrapSMI功能以防止病毒失能SMI以及(a5)載入操作系統(tǒng)。為使本發(fā)明的上述和其它目的、特征和優(yōu)點能更簡單易懂,故舉一較佳實施例,并結(jié)合附圖,進(jìn)一步詳細(xì)說明如下。圖1給出本發(fā)明電腦系統(tǒng)硬件電路結(jié)構(gòu)示意圖;圖2本發(fā)明保護(hù)BIOS免于被病毒破壞的方法的硬件設(shè)定示意圖;圖3給出本發(fā)明保護(hù)BIOS免于被病毒破壞的方法的軟件設(shè)定流程圖;以及圖4給出本發(fā)明保護(hù)BIOS免于被病毒破壞的方法的實施流程圖。在本發(fā)明中所述及的電腦病毒為一段可執(zhí)行的程序碼,以其在開機時感染操作系統(tǒng)為例,將會對存有BIOS程序碼的快閃存儲器有寫入的動作,造成BIOS被修改而無法開機。如果無法及時發(fā)現(xiàn)病毒的侵入,即無中毒警告功能通知使用者及早處理,則病毒便會繼續(xù)破壞其它裝置如磁盤或存儲器等,使得存于這些存儲單元內(nèi)的數(shù)據(jù)被修改或刪除而造成嚴(yán)重的損失。因此本發(fā)明所述的方法主要是保護(hù)存有BIOS的快閃存儲器不被病毒侵害,即通過BIOS快閃存儲器有寫入產(chǎn)生時,判斷此寫入動作是否為不正常的寫入,若經(jīng)判定結(jié)果為病毒便由電腦發(fā)出中毒警告,緊接著便采取避免電腦系統(tǒng)受感染的防范措施。具體的實施流程如下文所述。在此之前,請參照圖1所示的電腦硬件電路圖,以了解電腦系統(tǒng)大致的結(jié)構(gòu)。一般目前所廣為使用的計算機系統(tǒng),其CPU10通過CPU總線20與北橋NB(northbridge)30相連接,而北橋30除了與存儲器(可以是SDRAM、EDORAM等存儲器)40相接之外,還通過AGP總線50與AGPVGA卡60相連。此外,北橋30則經(jīng)由PCI總線70與南橋80相接,用以傳遞數(shù)據(jù)與信息。而南橋80除了與硬盤(HDD)90、光盤機(CDROM或DVDROM)100、USB(UniversalSerialBus,通用串聯(lián)式總線)110、輸入裝置(例如鼠標(biāo)、鍵盤等)120相接,用以存取或輸入數(shù)據(jù)之外,還分別通過XD總線130及ISA總線140,以分別與BIOS150及聲頻裝置(Audio,例如聲卡)160相接。其中北橋30與南橋80都為主機板上的控制芯片組(chipset),在CPU10附近的北橋芯片30又稱為系統(tǒng)主機芯片,在總線附近的南橋芯片是負(fù)責(zé)外圍設(shè)備的外圍設(shè)備芯片。首先探討電腦系統(tǒng)如何得知BIOS快閃存儲器被寫入。本發(fā)明實現(xiàn)的方式是利用快閃存儲器被寫入時必要信號可產(chǎn)生SMI的特性,據(jù)以獲知BIOS快閃存儲器有寫入的動作。這要從硬件設(shè)定及BIOS設(shè)定兩部分著手。請參照圖2,其給出本發(fā)明的硬件設(shè)定中,連通BIOS快閃存儲器與芯片組的SMI事件來源輸入管腳(eventsourceinputpin)的示意圖。在此較佳實施例中,BIOS快閃存儲器16利用一轉(zhuǎn)接單元14連接至系統(tǒng)芯片組12,例如為上述的南橋芯片30,芯片組12則連至CPU10。其中,轉(zhuǎn)接單元14可利用邏輯電路(logiccircuit)或利用SIO(superI/O,輸入/輸出控制器)實現(xiàn),主要是芯片組12所需接收的SMI來源(cause)相當(dāng)多,而芯片組12的SMI事件來源輸入管腳卻有限,因此最好是通過轉(zhuǎn)接單元14的集成與控制,使芯片組12能獲知由BIOS快閃存儲器的SMI來源。不過,如果芯片組12有空出的管腳,也可省去通過轉(zhuǎn)接單元14,直接將BIOS快閃存儲器16連接至芯片組12。這一硬件設(shè)定方式是在主機板布線(layout)時完成,利用電路設(shè)計使BIOS快閃存儲器16發(fā)出必要信號,如為一WE#(writeenable信號)的輸出,通過邏輯電路或SIO的轉(zhuǎn)接單元14或直接傳送到芯片組12,使芯片組12得知SMI來源而發(fā)出SMI#至CPU10。完成硬件設(shè)定之后,接下來需再結(jié)合BIOS的設(shè)定,請參照圖3,其給出經(jīng)修改BIOS程序碼后啟動BIOS的流程。由于一般電腦系統(tǒng)中,BIOS快閃存儲器可產(chǎn)生SMI信號的功能并未被打開。也就是說,就算是上述硬件設(shè)定都完成了,仍需結(jié)合BIOS程序碼的修改,系統(tǒng)才能得知對應(yīng)的SMI#來源為來自BIOS快閃存儲器16被寫入所產(chǎn)生。首先,如步驟101,當(dāng)電腦開機時,便會開始啟動“引導(dǎo)程序(booting)”,在啟動BIOS的過程中首先會執(zhí)行POST(Power-OnSelf-Test,加電自檢),其包括啟動各種測試以確定電腦功能為正確,以及初始化一定硬件裝置內(nèi)的寄存器,且大部分POST執(zhí)行時也包括載入BIOS程序碼(code)到存儲器中。在POST開始后,如步驟102,需將BIOS快閃存儲器發(fā)出SMI信號的功能打開,因此進(jìn)行初始化SMI處理程序的程序。接著,如步驟103,由BIOS對芯片組12執(zhí)行相關(guān)的設(shè)定,以匹配來自于BIOS快閃存儲器或邏輯電路或SIO的輸入信號。并且,如步驟104的防范措施,設(shè)定I/OtrapSMI功能以防止病毒失能(disable)SMI功能。最后,如步驟105,POST執(zhí)行完之后,電腦便載入一如微軟的MS-DOS或Windows的操作系統(tǒng)。完成相關(guān)的硬件及軟件設(shè)定后,接下來以圖4所示的流程步驟說明本發(fā)明處置病毒侵入的方法。如步驟201,當(dāng)CPU10接到一SMI#后便會至BIOS的SMI處理程序中,以檢查SMI來源為何(步驟202)。如步驟203,當(dāng)判定為BIOS快閃存儲器的寫入而引發(fā)此SMI#,且寫入的動作并非BIOS或BIOS更新工具程序所造成,也就是說寫入為病毒不正常修改BIOS(步驟204),則系統(tǒng)便發(fā)出警報信號(步驟205),如發(fā)出嗶嗶聲或具有特殊音節(jié)的聲音,以提醒使用者病毒正欲破壞BIOS。并且如步驟207,系統(tǒng)將采取禁止病毒寫入的相關(guān)措施。此外,在步驟203中判定SMI#產(chǎn)生來源并非是由BIOS快閃存儲器的寫入所造成,系統(tǒng)便會繼續(xù)進(jìn)行其它的SMI處理程序內(nèi)容(步驟208),最后再回到OS或AP(applicationprogram,應(yīng)用程序)中(步驟209)。而步驟204中,若判定出BIOS快閃存儲器的寫入為BIOS或BIOS更新程序或其它非不正常寫入的原因,則也會回到OS或AP的步驟209。至于步驟207中,采用的禁止寫入方式不同會有不同的處理方式,詳細(xì)內(nèi)容請見以下說明。先說明步驟204中如何判斷BIOS快閃存儲器被寫入產(chǎn)生SMI#是為病毒程序所造成的方法,提出三種較佳實施例如下(1)使BIOS或者BIOS更新程序要寫入BIOS快閃存儲器之前,先在存儲器中某一特定位置寫入某一特定值,即為設(shè)定一flash寫入標(biāo)記(flag),做完再將之清除。因此當(dāng)BIOS的SMI處理程序判斷SMI發(fā)生原因是否為BIOS快閃存儲器被寫入時,檢查上述flash寫入標(biāo)記是否存在。若是,則是BIOS或者BIOS更新程序所為;若flash標(biāo)記不存在,則判定為病毒程序破壞BIOS快閃存儲器。(2)使BIOS或BIOS更新程序?qū)懭隑IOS快閃存儲器時一律呼叫BIOS服務(wù)程序來完成,而BIOS服務(wù)程序一定放在存儲器000E0000h至000FFFFFROM的地址中。而當(dāng)SMI發(fā)生,CPU進(jìn)入SMM(systemmanagementmode)時,會把中斷前正在執(zhí)行程序的地址,以CS(codesegment,程序碼區(qū)段)或EIP(expandedinstructionpointer,擴充指令指針)等寄存器存儲于SMRAM中。因此當(dāng)BIOS快閃存儲器被寫入而產(chǎn)生SMI時,SMI處理程序檢查中斷前正在執(zhí)行程序的地址是否在存儲器000E0000h至000FFFFF的地址中。若是,則是BIOS或者BIOS更新程序所為;若不是,則認(rèn)定為病毒所為。(3)使BIOS或BIOS更新程序要寫入BIOS快閃存儲器之前,先將BIOS快閃存儲器被寫入產(chǎn)生SMI#的開關(guān)關(guān)閉,等寫完后再重新打開。這樣,寫入過程中不會產(chǎn)生SMI#。因為病毒程序不知道或無法關(guān)閉上述SMI#的開關(guān),所以當(dāng)SMI處理程序發(fā)現(xiàn)因BIOS快閃存儲器被寫入而產(chǎn)生SMI時,則認(rèn)定為病毒程序所為。至于步驟207禁止病毒寫入的方法,即SMI處理程序處理病毒破壞BIOS快閃存儲器的方法,提出兩種較佳實施例如下(1)利用系統(tǒng)揚聲器(speaker)不斷發(fā)出特殊聲音以警告使用者。CPU就不斷執(zhí)行此一聲音程序,不再離開SMI處理程序以免CPU回到病毒程序破壞BIOS快閃存儲器,或者避免其進(jìn)一步破壞硬盤等其它裝置。由于此時系統(tǒng)呈現(xiàn)當(dāng)機狀態(tài),使用者可根據(jù)聲音查詢使用者手冊或者詢問電腦公司,可以得知電腦已經(jīng)中毒。(2)利用SMI處理程序在存儲器中特定位置寫入一特定值,即為設(shè)定一中毒標(biāo)記。因為BIOS快閃存儲器數(shù)據(jù)被寫入前必須先對其特定地址寫入一連串的命令碼,故SMI處理程序可于SMRAM的CPU寄存器值中破壞病毒的寫入命令碼,使其寫入命令失效,無法破壞BIOS快閃存儲器。因此,本方法最后會進(jìn)行上述步驟208而回到OS,此時再對應(yīng)寫一程序于OS下執(zhí)行,定期檢查存儲器中的中毒標(biāo)記,或發(fā)現(xiàn)中毒標(biāo)記被設(shè)立,則立即于屏幕上顯示信息以警告使用者。雖然本發(fā)明已以較佳實施例公開如上,但它并非用以限定本發(fā)明。任何本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可作適當(dāng)?shù)母呐c潤飾,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所界定的范圍為準(zhǔn)。權(quán)利要求1.一種保護(hù)BIOS免于被病毒破壞的方法,其通過存有BIOS的一快閃存儲器與一芯片組的SMI事件來源輸入管腳形成連通,實現(xiàn)防止病毒寫入該快閃存儲器,其步驟至少包括執(zhí)行相關(guān)BIOS設(shè)定以匹配來自該快閃存儲器的一必要信號;電腦CPU接收由該芯片組發(fā)出的一SMI信號;至BIOS的SMI處理程序檢查SMI來源;判定該SMI來源為該快閃存儲器被病毒寫入;以及禁止該病毒的寫入。2.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中該必要信號為一WE#(可寫入信號)。3.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中該執(zhí)行硬件設(shè)定的步驟包括執(zhí)行BIOS啟動時的POST;初始化該SMI處理程序;對該芯片組執(zhí)行相關(guān)設(shè)定,使該快閃存儲器被寫入時該芯片組能產(chǎn)生一SMI信號;設(shè)定I/OtrapSMI功能以防止病毒關(guān)閉SMI;以及載入操作系統(tǒng)。4.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中判定該快閃存儲器為病毒寫入的步驟還包括設(shè)定一經(jīng)授權(quán)程序?qū)懭朐摽扉W存儲器時,先寫入一flash寫入標(biāo)記于一存儲器;以及SMI處理程序至該存儲器內(nèi)檢查該標(biāo)記不存在,認(rèn)定寫入為病毒程序所為。5.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中判定該快閃存儲器為病毒寫入的步驟還包括設(shè)定一經(jīng)授權(quán)程序?qū)懭朐摽扉W存儲器時,將呼叫BIOS服務(wù)程序;以及SMI處理程序檢查中斷前正被執(zhí)行的程序地址是不在存儲器000E0000h至000FFFFF的地址中,認(rèn)定寫入為病毒程序所為。6.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中判定該快閃存儲器為病毒寫入的步驟還包括,設(shè)定一經(jīng)授權(quán)程序?qū)懭朐揃IOS快閃存儲器時,將關(guān)閉產(chǎn)生SMI信號,故SMI處理程序檢查SMI來源為該快閃存儲器被寫入所造成時,認(rèn)定寫入為病毒程序所為。7.如權(quán)利要求4至6中任一項所述的保護(hù)BIOS免于被病毒破壞的方法,其中該經(jīng)授權(quán)程序包括BIOS或BIOS更新程序中任何一個。8.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中禁止該病毒的寫入的步驟還包括發(fā)出警訊聲音;以及使執(zhí)行不離開SMI處理程序。9.如權(quán)利要求1所述的保護(hù)BIOS免于被病毒破壞的方法,其中禁止該病毒的寫入的步驟還包括SMI處理程序于一存儲器寫入一中毒標(biāo)記;SMI處理程序破壞病毒寫入一地址的一命令序列,使該寫入命令失能;回到操作系統(tǒng);以及檢查該存儲器存有該中毒標(biāo)記,顯示一警告信息。全文摘要本發(fā)明涉及一種保護(hù)BIOS免被病毒破壞的方法。它主要是利用快閃存儲器被寫入時的必要信號產(chǎn)生系統(tǒng)管理中斷(SMI),因此當(dāng)存于快閃存儲器的BIOS有寫入動作時,利用BIOS的SMI處理程序(handlerroutine)即可防止病毒。該方法首先是使快閃存儲器發(fā)出的必要信號接到電腦芯片組的SMI事件來源(SMIeventsource)輸入管腳,使芯片組能產(chǎn)生對應(yīng)的SMI#至電腦的CPU,當(dāng)CPU接收到SMI#時,便能通過BIOS的SMI處理程序檢查存于快閃存儲器的BIOS是否有寫入,經(jīng)判斷結(jié)果為病毒侵入時即禁止其寫入。文檔編號G06F12/14GK1311478SQ00103400公開日2001年9月5日申請日期2000年3月3日優(yōu)先權(quán)日2000年3月3日發(fā)明者李永富申請人:英業(yè)達(dá)股份有限公司