專利名稱:可編程芯片軟件防寫保護(hù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及可編程(programmable)芯片的防寫保護(hù)方法,特別涉及采用軟件來(lái)達(dá)到防止不正確資料寫入可編程芯片的暫存器的保護(hù)方法。
以往許多可編程芯片組(chipset)或IC是沒(méi)有提供保護(hù)機(jī)制的,但是沒(méi)有保護(hù)是非常危險(xiǎn)的事,就病毒程序?yàn)槔?,?dāng)病毒將可編程芯片寫入錯(cuò)誤的參數(shù)時(shí),將使系統(tǒng)發(fā)生當(dāng)機(jī)或不穩(wěn)定的現(xiàn)象。對(duì)于封閉式系統(tǒng),上述的情況是不會(huì)發(fā)生的,但對(duì)于開(kāi)放式系統(tǒng)而言,除了所規(guī)定的修改程序之外,不可任意修改可編程芯片的暫存器的資料是非常重要的。
圖1示出現(xiàn)有技術(shù)的電腦的基本結(jié)構(gòu)圖。如圖1所示,CPU10、主存儲(chǔ)器12及影像加速卡14連接至北橋芯片16,周邊設(shè)備22連接至南橋芯片20,北橋芯片16與南橋芯片20再互相連接,如此,將概略地描述電腦系統(tǒng)的基本架構(gòu)。
當(dāng)電腦開(kāi)機(jī)時(shí),即CPU10開(kāi)始工作,CPU10會(huì)尋找要執(zhí)行的第一個(gè)指令的所在的地址,而其地址是在主機(jī)板上BIOS(Basic Input Output System)快閃存儲(chǔ)器中的開(kāi)機(jī)程序的地址,CPU10便開(kāi)始執(zhí)行開(kāi)機(jī)程序。
這時(shí),開(kāi)機(jī)程序檢查電腦中所有的標(biāo)準(zhǔn)元件(如主存儲(chǔ)器12等)是否存在,同時(shí)檢查其功能是否正常。在做檢查工作之前,先將中斷向量表的前十六欄指標(biāo)改為指向主機(jī)板中BIOS的中斷服務(wù)例行程序(Interrupt ServiceRoutine),完成這樣的程序之后,開(kāi)機(jī)程序才會(huì)啟動(dòng)屏蔽(mask)式中斷,如此,電腦才會(huì)有所回應(yīng),如鍵盤的按鍵訊號(hào)。
之后,開(kāi)機(jī)程序會(huì)檢查介面卡是否有BIOS芯片。例如檢查到加速影像卡14上有影像BIOS芯片(未示出),開(kāi)機(jī)程序會(huì)將電腦的控制權(quán)轉(zhuǎn)移給影像BIOS芯片中的程序,讓這個(gè)程序可在中斷向量表的適當(dāng)欄位放入中斷服務(wù)例行程序的地址,當(dāng)執(zhí)行影像BIOS芯片中的程序時(shí),便將資料顯示在螢?zāi)簧稀.?dāng)完成上述的動(dòng)作時(shí),電腦的控制權(quán)便會(huì)還給主機(jī)板上BIOS的開(kāi)機(jī)程序。
同樣地,主機(jī)板上BIOS的開(kāi)機(jī)程序會(huì)設(shè)定可編程芯片(如北橋芯片16及南橋芯片20)內(nèi)的各種暫存器,讓可編程芯片得知與那些設(shè)備相連接,必須執(zhí)行那些工作,當(dāng)CPU10要與主存儲(chǔ)器12或周邊設(shè)備22傳輸資料時(shí),便可以由所設(shè)定的可編程芯片完成其工作。
電腦系統(tǒng)使用可編程芯片的優(yōu)點(diǎn)為1.同一個(gè)可編程芯片具有多種功能的選擇,以適應(yīng)系統(tǒng)不同的要求,只需要更新可編程芯片中的程序即可。2.可以調(diào)整可編程芯片中各種功能的暫存器的各種參數(shù),以適應(yīng)系統(tǒng)不同的周邊設(shè)備,例如南橋芯片,只需調(diào)整暫存器的參數(shù)就可外接磁碟機(jī)或掃描器等周邊設(shè)備。
然而,當(dāng)可編程芯片完成設(shè)定后,是不允許任意修改的,亦即可編程芯片內(nèi)的各種功能的暫存器所儲(chǔ)存的數(shù)值是不可任意修改的。因?yàn)樾薷倪@些暫存器所儲(chǔ)存的數(shù)值會(huì)改變連接設(shè)備或工作狀態(tài),例如當(dāng)CPU10要與主存儲(chǔ)器12或周邊設(shè)備22傳輸資料時(shí),可能造成資料傳送錯(cuò)誤或執(zhí)行工作錯(cuò)誤,使得系統(tǒng)停滯或不穩(wěn)定的情況發(fā)生。
因此,現(xiàn)有技術(shù)采用一種硬體的方式來(lái)解決上述的問(wèn)題,其方式是要修改可編程芯片中某一個(gè)暫存器的數(shù)值時(shí),必須先做寫入特定的暫存器的動(dòng)作,而且必須重復(fù)做寫入的動(dòng)作,其重復(fù)的次數(shù)必須達(dá)到預(yù)定的次數(shù)后才可以修改欲修改的暫存器。例如要修改可編程芯片中第三個(gè)暫存器的數(shù)值,先寫入任意的數(shù)值于第七個(gè)暫存器,而且重復(fù)寫入五次,然后再將修改的數(shù)值寫入第三個(gè)暫存器,如此,才完成了修改暫存器的數(shù)值。
然而,上述的方式有其缺點(diǎn),當(dāng)使用者在執(zhí)行應(yīng)用程序時(shí),由于人為的因素,如暫存器的誤用或指令的執(zhí)行錯(cuò)誤等,發(fā)生寫入錯(cuò)誤地址而導(dǎo)致可編程芯片的暫存器的數(shù)值被修改;或者熟悉上述的方式的程序設(shè)計(jì)師撰寫病毒程序,當(dāng)病毒程序進(jìn)入系統(tǒng)且執(zhí)行此程序時(shí),病毒程序就會(huì)修改可編程芯片的暫存器的數(shù)值,都將造成系統(tǒng)的紊亂,使得系統(tǒng)發(fā)生停滯或不穩(wěn)定的情況。
總結(jié)上述的缺點(diǎn)有(1)當(dāng)執(zhí)行應(yīng)用程序時(shí),由于暫存器的誤用或執(zhí)行結(jié)果錯(cuò)誤而發(fā)生可編程芯片中的暫存器的資料被修改;(2)當(dāng)病毒程序被執(zhí)行時(shí),進(jìn)行修改可編程芯片中的暫存器的資料,都會(huì)造成系統(tǒng)停滯或不穩(wěn)定。
本發(fā)明所提出的方法是應(yīng)用在電腦系統(tǒng)中的可編程芯片的暫存器,而采用軟件的方式來(lái)防止資料任意存入暫存器內(nèi),以保護(hù)電腦系統(tǒng)。
本發(fā)明提出一種可編程芯片軟件防寫保護(hù)的方法,系應(yīng)用于電腦系統(tǒng),在電腦系統(tǒng)的基本輸入輸出系統(tǒng)中包括首先,撰寫一個(gè)中斷服務(wù)程序。以及,建立一個(gè)指標(biāo)表。
本發(fā)明提出一種可編程芯片軟件防寫保護(hù)的方法,系應(yīng)用于電腦系統(tǒng)中,在電腦系統(tǒng)中包括可編程芯片,可編程芯片中包括指標(biāo)暫存器??删幊绦酒浖缹懕Wo(hù)的方法提供一個(gè)中斷服務(wù)程序,此中斷服務(wù)程序包括一個(gè)指標(biāo)表,當(dāng)電腦系統(tǒng)將指標(biāo)資料寫入可編程芯片的指標(biāo)暫存器時(shí),電腦系統(tǒng)便執(zhí)行中斷服務(wù)程序。此中斷服務(wù)程序包括下列步驟判斷指標(biāo)資料是否屬于指標(biāo)表,以及當(dāng)屬于該指標(biāo)表時(shí),改變指標(biāo)皙存器中的值為一個(gè)不影響的指標(biāo)資料。
當(dāng)執(zhí)行中斷服務(wù)程序時(shí),在判斷指標(biāo)資料是否屬于指標(biāo)表之前,先將前一個(gè)程序的工作進(jìn)度的資料儲(chǔ)存在可讀寫存儲(chǔ)單元中,在執(zhí)行完中斷服務(wù)程序之后,將前一個(gè)程序的工作進(jìn)度的資料從可讀寫存儲(chǔ)器單元中讀取出。當(dāng)該電腦系統(tǒng)開(kāi)機(jī)后,從只讀存儲(chǔ)單元讀取指標(biāo)表以及對(duì)應(yīng)于中斷服務(wù)程序的中斷向量值。
本發(fā)明提出一種可編程芯片軟件防寫保護(hù)的方法,應(yīng)用于電腦系統(tǒng)中,電腦系統(tǒng)包括可編程芯片以及對(duì)應(yīng)于可編程芯片的指標(biāo)表,此可編程芯片包括指標(biāo)暫存器??删幊绦酒浖缹懕Wo(hù)的方法提供中斷服務(wù)程序,當(dāng)電腦系統(tǒng)將指標(biāo)資料寫入可編程芯片的指標(biāo)皙存器時(shí),電腦系統(tǒng)執(zhí)行中斷服務(wù)程序。其中,指標(biāo)表所記錄的地址值包括不可任意修改的暫存器的地址值、中斷向量的地址值、中斷服務(wù)程序的起始地址值與指標(biāo)表的地址值。
為讓本發(fā)明的上述目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附圖式,作詳細(xì)說(shuō)明如下圖式的簡(jiǎn)單說(shuō)明圖1示出現(xiàn)有技術(shù)的電腦的基本架構(gòu)圖;圖2示出建立指標(biāo)表及中斷服務(wù)程序的流程圖;圖3示出開(kāi)機(jī)時(shí)讀取中斷向量值的流程圖;以及圖4示出執(zhí)行中斷服務(wù)程序的流程圖。
依據(jù)本發(fā)明的可編程芯片軟件防寫保護(hù)的方法,以上述圖1的電腦系統(tǒng)為例,圖2示出建立指標(biāo)表及中斷服務(wù)程序的流程圖。當(dāng)一部電腦在出廠前,首先,在電腦的基本輸入輸出系統(tǒng)(Basic Input Output System)撰寫SMI(SystemManagement Interrupt)服務(wù)程序(S24)以及其它系統(tǒng)設(shè)定程序,例如選定觸發(fā)SMI的I/O地址,及讀寫可編程芯片指標(biāo)的地址。在中斷向量表中適當(dāng)?shù)臋谖环胖靡粋€(gè)中斷向量值,這個(gè)中斷向量值是對(duì)應(yīng)于SMI服務(wù)程序的起始地址。其次,在中斷服務(wù)程序中建立指標(biāo)表(S26),這個(gè)指標(biāo)表中的指標(biāo)資料是記錄可編程芯片中不可任意修改的暫存器的地址值、中斷向量的地址值、中斷服務(wù)程序的地址值與此指標(biāo)表的地址值。
圖3示出開(kāi)機(jī)時(shí)讀取中斷向量值的流程圖。當(dāng)電腦開(kāi)機(jī)時(shí),電腦從BIOS的只讀存儲(chǔ)器讀取資料并執(zhí)行程序,如系統(tǒng)的檢查、將中斷向量表載入存儲(chǔ)器中及各芯片的設(shè)定等。此時(shí),相對(duì)于SMI中斷服務(wù)程序的中斷向量值亦載入存儲(chǔ)器中(S28)。舉可編程芯片的組態(tài)暫存器為不可修改的暫存器為例,在系統(tǒng)中的可編程芯片的組態(tài)暫存器存入數(shù)值以設(shè)定各可編程芯片的功能,所以電腦開(kāi)機(jī)完成各可編程芯片的功能設(shè)定后,各可編程芯片的組態(tài)暫存器所存入的數(shù)值是不可以任意修改的,故建立指標(biāo)表以記錄這些不可任意修改的可編程芯片的組態(tài)暫存器的地址,讓CPU知道指標(biāo)暫存器所指的地址是否為這些不可任意修改的可編程芯片的組態(tài)暫存器的地址。
當(dāng)電腦開(kāi)機(jī)完成系統(tǒng)的測(cè)試及設(shè)定后,電腦依使用者的需求執(zhí)行所需的應(yīng)用程序,依序完成所要的目的。若因人為的操作不當(dāng)或病毒程序的侵入,而發(fā)生修改可編程芯片的組態(tài)皙存器的數(shù)值,造成系統(tǒng)停滯或不穩(wěn)定的情況,本發(fā)明所提出的方法是可以解決這個(gè)問(wèn)題。
圖4示出執(zhí)行中斷服務(wù)程序的流程圖。當(dāng)CPU執(zhí)行應(yīng)用程序時(shí),CPU讀取到寫入可編程芯片的指標(biāo)暫存器的指令,則CPU會(huì)中斷目前的指令,然后在中斷向量表找出一個(gè)中斷向量值,這個(gè)中斷向量值是對(duì)應(yīng)于SMI服務(wù)程序的起始地址,接下來(lái)CPU開(kāi)始執(zhí)行SMI服務(wù)程序。
首先,CPU將目前的工作進(jìn)度的資料儲(chǔ)存起來(lái)(S30),接著,CPU判斷指令中寫入可編程芯片的指標(biāo)暫存器的地址是否對(duì)應(yīng)于指標(biāo)表中的地址(S32),即判斷寫入指標(biāo)暫存器所指的地址是否對(duì)應(yīng)于可編程芯片的組態(tài)暫存器的地址,如果判斷的結(jié)果為否,則取回工作進(jìn)度的資料,離開(kāi)SMI服務(wù)程序,繼續(xù)執(zhí)行未執(zhí)行完畢的指令(S36);若結(jié)果為是,修改指令中的數(shù)值,修改后的數(shù)值使可編程芯片的指標(biāo)暫存器所指的地址指向只讀存儲(chǔ)器的地址或者不影響系統(tǒng)正常運(yùn)作的存儲(chǔ)器的地址,不再是可編程芯片的組態(tài)暫存器的地址(S34)。當(dāng)修改完畢后,取回工作進(jìn)度的資料,離開(kāi)SMI服務(wù)程序,繼續(xù)執(zhí)行未執(zhí)行完畢的指令(S36)。
因此,本發(fā)明的優(yōu)點(diǎn)系使用軟件的方式來(lái)防止可編程芯片的組態(tài)暫存器的數(shù)值被修改,只需增加一小段程序就可完成,不需增加額外的硬體線路,如此,就不會(huì)增加硬體線路設(shè)計(jì)的復(fù)雜度。
綜上所述,雖然本發(fā)明已以優(yōu)選實(shí)施例公開(kāi)如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的替代和修改,因此本發(fā)明的保護(hù)范圍當(dāng)由后附的權(quán)利要求界定。
權(quán)利要求
1.一種可編程芯片軟件防寫保護(hù)的方法,用于一電腦系統(tǒng),在該電腦系統(tǒng)的一基本輸入輸出系統(tǒng)中,包括撰寫一中斷服務(wù)程序;以及建立一指標(biāo)表。
2.如權(quán)利要求1所述的可編程芯片軟件防寫保護(hù)的方法,其中設(shè)定一中斷向量值,以作為該中斷服務(wù)程序的起始地址。
3.如權(quán)利要求1所述的可編程芯片軟件防寫保護(hù)的方法,其中記錄該指標(biāo)表的內(nèi)容包括一不可任意修改皙存器地址值、一中斷向量地址值、一中斷服務(wù)程序起始地址值與一指標(biāo)表地址值。
4.如權(quán)利要求1所述的可編程芯片軟件防寫保護(hù)的方法,其中建立該指標(biāo)表于該中斷服務(wù)程序之中。
5.一種可編程芯片軟件防寫保護(hù)的方法,應(yīng)用于一電腦系統(tǒng)中,該電腦系統(tǒng)包括一可編程芯片,該可編程芯片包括一指標(biāo)皙存器,該可編程芯片軟件防寫保護(hù)的方法提供一中斷服務(wù)程序,該中斷服務(wù)程序包括一指標(biāo)表,當(dāng)該電腦系統(tǒng)將一指標(biāo)資料寫入該可編程芯片的該指標(biāo)暫存器時(shí),該電腦系統(tǒng)執(zhí)行該中斷服務(wù)程序,該中斷服務(wù)程序包括下列步驟判斷該指標(biāo)資料是否屬于該指標(biāo)表;以及當(dāng)屬于該指標(biāo)表時(shí),改變?cè)撝笜?biāo)暫存器中的值為一不影響指標(biāo)資料。
6.如權(quán)利要求5所述的可編程芯片軟件防寫保護(hù)的方法,當(dāng)執(zhí)行該中斷服務(wù)程序時(shí),在判斷該指標(biāo)資料是否屬于該指標(biāo)表之前,先將前一程序的工作進(jìn)度的資料儲(chǔ)存在一可讀寫存儲(chǔ)單元中。
7.如權(quán)利要求5所述的可編程芯片軟件防寫保護(hù)的方法,當(dāng)執(zhí)行該中斷服務(wù)程序時(shí),在改變?cè)撝笜?biāo)暫存器中的值之后,將該程序的工作進(jìn)度的資料從該可讀寫存儲(chǔ)單元中讀取出,并載入該中央處理單元。
8.如權(quán)利要求5所述的可編程芯片軟件防寫保護(hù)的方法,當(dāng)該電腦系統(tǒng)開(kāi)機(jī)后,從一只讀存儲(chǔ)單元讀取該指標(biāo)表以及對(duì)應(yīng)于該中斷服務(wù)程序的一中斷向量值。
全文摘要
一種可編程芯片軟件防寫保護(hù)的方法,應(yīng)用在電腦系統(tǒng)中的可編程芯片的暫存器。當(dāng)電腦系統(tǒng)中可編程芯片的暫存器設(shè)定完畢后,依照所設(shè)定功能執(zhí)行工作,不允許任意修改可編程芯片的暫存器的內(nèi)容。當(dāng)病毒將可編程芯片寫入錯(cuò)誤的參數(shù)時(shí),中斷服務(wù)程序更改病毒指令的內(nèi)容,可避免可編程芯片的暫存器的內(nèi)容被修改。因此采用軟件的方式來(lái)達(dá)到防止資料寫入暫存器的目的,使電腦系統(tǒng)不會(huì)產(chǎn)生不穩(wěn)定的情況,并且提升電腦系統(tǒng)的穩(wěn)定度。
文檔編號(hào)G06F12/16GK1328294SQ0011831
公開(kāi)日2001年12月26日 申請(qǐng)日期2000年6月12日 優(yōu)先權(quán)日2000年6月12日
發(fā)明者陳宇光 申請(qǐng)人:華碩電腦股份有限公司