專利名稱:開(kāi)機(jī)型病毒檢測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)病毒的檢測(cè)方法,特別涉及一種檢測(cè)開(kāi)機(jī)型計(jì)算機(jī)病毒的方法。
在各種類型的計(jì)算機(jī)病毒中,都有其特有的病毒型態(tài)、傳播途徑,這些計(jì)算機(jī)病毒對(duì)一計(jì)算機(jī)系統(tǒng)而言,都會(huì)造成不同程度的破壞。典型的開(kāi)機(jī)型計(jì)算機(jī)病毒型態(tài)一般都是感染一計(jì)算機(jī)系統(tǒng)中硬盤裝置的引導(dǎo)區(qū)(BootSector),并利用這些區(qū)域作為傳布的媒介。
為了要檢測(cè)計(jì)算機(jī)病毒,有許多種檢測(cè)方法被提出。例如當(dāng)一待執(zhí)行的程序要在計(jì)算機(jī)中執(zhí)行時(shí),首先會(huì)執(zhí)行一自我測(cè)試,以判斷該程序是否已被修改過(guò),若該程序碼已被修改過(guò),則即表示該程序可能已受到計(jì)算機(jī)病毒的感染。另一種方法是以檢查和(Check Sum)的方式,在執(zhí)行程序之前,會(huì)首先進(jìn)行檢查和的核對(duì),如此以判別該程序是否已被修改過(guò)。
雖然上述的病毒檢測(cè)方法,皆能達(dá)到某一程度的效果,但其前提要件是計(jì)算機(jī)系統(tǒng)必需完成正常的啟動(dòng)程序之后,才有可能執(zhí)行該病毒檢測(cè)的功能。亦即,這些病毒檢測(cè)方法并無(wú)法適用于某些開(kāi)機(jī)型的病毒檢測(cè)。
在開(kāi)機(jī)型的病毒方面,其病毒程序是存在于可執(zhí)行啟動(dòng)的數(shù)據(jù)存儲(chǔ)裝置(例如一硬盤裝置)的引導(dǎo)區(qū)中。當(dāng)利用感染有開(kāi)機(jī)型病毒的硬盤執(zhí)行計(jì)算機(jī)系統(tǒng)的啟動(dòng)時(shí),該病毒程序即會(huì)被載入至計(jì)算機(jī)系統(tǒng)存儲(chǔ)器中,并執(zhí)行其病毒功能。
在大部分的開(kāi)機(jī)型計(jì)算機(jī)病毒中,一旦該病毒程序取代正常的啟動(dòng)程序之后,首先會(huì)攔截中斷向量INT 13h,該中斷向量的功能是控制硬盤/軟盤的存取功能。當(dāng)攔截到該中斷向量INT 13h時(shí),該病毒程序會(huì)改變?cè)撝袛嘞蛄康南蛄康刂?,并以一新的輔程序取代該中斷向量的功能,并以該新的輔程序作為病毒傳布的途徑。一般而言,該開(kāi)機(jī)型病毒會(huì)在計(jì)算機(jī)電源開(kāi)啟狀態(tài)中,一直存在計(jì)算機(jī)系統(tǒng)中,并在每一次計(jì)算機(jī)重新啟動(dòng)時(shí),都會(huì)重復(fù)執(zhí)行前述病毒的感染。因此,若無(wú)法在計(jì)算機(jī)系統(tǒng)啟動(dòng)初期即有效檢測(cè)該開(kāi)機(jī)型病毒的話,則對(duì)于計(jì)算機(jī)的使用及數(shù)據(jù)的安全性將會(huì)有極大的威脅。
本發(fā)明的主要目的是提供一種檢測(cè)開(kāi)機(jī)型病毒的方法,當(dāng)本發(fā)明的方法檢測(cè)到任何企圖寫入到計(jì)算機(jī)系統(tǒng)的硬盤引導(dǎo)區(qū)的動(dòng)作時(shí),即可發(fā)出一警告,以適時(shí)警告使用者該計(jì)算機(jī)可能已感染到開(kāi)機(jī)型病毒。
本發(fā)明的另一目的是提供一種早期檢測(cè)開(kāi)機(jī)型病毒的方法,該方法直接利用中央處理單元中相關(guān)的控制寄存器、斷點(diǎn)寄存器、除錯(cuò)控制寄存器、除錯(cuò)狀態(tài)寄存器等來(lái)執(zhí)行病毒的檢測(cè)。
為達(dá)到本發(fā)明的上述目的,首先是在該中央處理器的一控制寄存器中設(shè)定除錯(cuò)擴(kuò)展位;在該中央處理器的斷點(diǎn)寄存器中設(shè)定該計(jì)算機(jī)系統(tǒng)所連接硬盤裝置的硬盤狀態(tài)/命令寄存器的地址;在除錯(cuò)控制寄存器中,設(shè)定該中央處理器在執(zhí)行輸出入界面動(dòng)作時(shí),產(chǎn)生中斷功能、以及設(shè)定位長(zhǎng)度值;判斷是否發(fā)生除錯(cuò)狀況;判斷中央處理器的除錯(cuò)狀態(tài)寄存器中的對(duì)應(yīng)的斷點(diǎn)條件是否被設(shè)定;判斷中央處理器目前所執(zhí)行的指令是否為執(zhí)行數(shù)據(jù)轉(zhuǎn)移的輸出指令;判斷中央處理器中,輸出入端地址直接定址或寄存器間接定址的位數(shù)據(jù)是否為寫入數(shù)據(jù)至硬盤裝置的地址;判斷輸出入端的地址是否恰為硬盤裝置引導(dǎo)區(qū)的地址,若是的話即發(fā)出警示,以警告使用者該計(jì)算機(jī)可能已感染到開(kāi)機(jī)型病毒。
本發(fā)明的其它目的及其進(jìn)一步的病毒檢測(cè)方法,將由以下的較佳實(shí)施例說(shuō)明并結(jié)合附圖,作進(jìn)一步的說(shuō)明,其中
圖1是顯示一典型個(gè)人計(jì)算機(jī)系統(tǒng)中,中央處理單元、輸出入界面、硬盤裝置、存儲(chǔ)器間的簡(jiǎn)略連接示意圖;圖2是顯示一Pentium級(jí)中央處理器內(nèi)部相關(guān)寄存器的示意圖;圖3是顯示本發(fā)明病毒檢測(cè)方法的流程圖。
圖1是顯示一典型個(gè)人計(jì)算機(jī)系統(tǒng)中,中央處理單元1、輸出入界面3、硬盤裝置4、存儲(chǔ)器5間的簡(jiǎn)略連接示意圖,其中該中央處理單元1經(jīng)由系統(tǒng)總線及輸出入界面3而與硬盤裝置4連接,而中央處理單元1則經(jīng)由該系統(tǒng)總線而與一存儲(chǔ)器5相連接。其中該系統(tǒng)總線包括有地址總線21、數(shù)據(jù)總線22、及控制總線23。
在以下的實(shí)施例中,是以Intel公司Pentium級(jí)中央處理器作一較佳實(shí)施例說(shuō)明,且該硬盤裝置4是經(jīng)一IDE界面而與中央處理器1相連接。
參照?qǐng)D2所示,在一典型的Pentium級(jí)中央處理器內(nèi)部依其功能約略可分為通用目的寄存器10(General Purpose Register)、段寄存器11(SegmentRegister)、狀態(tài)及指令寄存器12(Status and Instruction Register)。其中該通用目的寄存器10一般是用來(lái)處理字節(jié)數(shù)據(jù),段寄存器11是用來(lái)決定存儲(chǔ)器地址段的基底地址,狀態(tài)及指令寄存器12是用來(lái)指定欲執(zhí)行指令、以及指示在執(zhí)行指令后的結(jié)果狀態(tài)。
此外,在Pentium級(jí)中央處理器內(nèi)部尚包括有其它系統(tǒng)寄存器,這些系統(tǒng)寄存器中,與本發(fā)明的病毒檢測(cè)方法有關(guān)的寄存器包括有控制寄存器組13及除錯(cuò)寄存器組14。
控制寄存器組13中包括有數(shù)個(gè)控制寄存器CR0~CR4,其中控制寄存器CR4的位定義中,共有位0至位6,其中的位3乃為除錯(cuò)擴(kuò)展功能的設(shè)定位,當(dāng)該位設(shè)定為1時(shí),乃啟動(dòng)輸出入界面斷點(diǎn)除錯(cuò)擴(kuò)展功能,當(dāng)該位設(shè)定為0時(shí),乃解除輸出入界面斷點(diǎn)除錯(cuò)擴(kuò)展功能。
除錯(cuò)寄存器組14中包括有數(shù)個(gè)寄存器DR0~DR7,其中的DR0~DR3是作為斷點(diǎn)寄存器,每一個(gè)斷點(diǎn)寄存器中含32位的斷點(diǎn)線性地址。DR6是作為除錯(cuò)狀態(tài)寄存器,其可用來(lái)暫存該斷點(diǎn)寄存器DR0~DR3的狀態(tài)。DR7是作為一除錯(cuò)控制寄存器(Debug Control Register),其是用來(lái)控制該斷點(diǎn)寄存器DR0~DR3的動(dòng)作。
每一個(gè)斷點(diǎn)寄存器DR0~DR3都有一些各自的控制位(在除錯(cuò)控制寄存器DR7中),例如LEN的值決定在斷點(diǎn)地址的存取長(zhǎng)度,當(dāng)LEN=00時(shí),字節(jié);LEN=01語(yǔ)句LEN=11雙語(yǔ)句。R/W的值決定在斷點(diǎn)地址上發(fā)生斷點(diǎn)的原因,R/W=00,指令碼存??;R/W=01,數(shù)據(jù)寫入R/W=11,數(shù)據(jù)讀取與寫入。
以下將同時(shí)參照?qǐng)D2所示的中央處理器內(nèi)部寄存器組結(jié)構(gòu)及圖3所示的控制流程圖,對(duì)本發(fā)明的病毒檢測(cè)方法作一詳細(xì)說(shuō)明如后。
在系統(tǒng)啟始后,本發(fā)明首先在步驟101中,在中央處理器的控制寄存器CR4中設(shè)定除錯(cuò)擴(kuò)展位(Debug Extention)。此一步驟中即是將中央處理器中的控制寄存器CR4的第三位設(shè)定為1,以啟動(dòng)輸出入斷點(diǎn)除錯(cuò)擴(kuò)展功能。
然后在中央處理器的斷點(diǎn)寄存器(DR0-DR3)中的任兩個(gè)寄存器中設(shè)定十六進(jìn)位數(shù)值數(shù)據(jù)1F7h及177h,步驟102。其中該數(shù)值1F7h是表示計(jì)算機(jī)系統(tǒng)中所連接的第一個(gè)硬盤狀態(tài)/命令寄存器的地址,而數(shù)值177h乃為第二個(gè)硬盤狀態(tài)/命令寄存器的地址。
在步驟103中,在中央處理器的除錯(cuò)控制寄存器DR7對(duì)應(yīng)的R/W位(讀取/寫入控制位)中設(shè)定數(shù)值10,其意為當(dāng)中央處理器在執(zhí)行輸出入時(shí),會(huì)執(zhí)行中斷功能。此外,在此一步驟中,也在該除錯(cuò)控制寄存器DR7對(duì)應(yīng)的LEN位(長(zhǎng)度位)中設(shè)定數(shù)值00(其數(shù)值是代表位長(zhǎng)度值是1位)。
在完成上述的相關(guān)寄存器數(shù)據(jù)設(shè)定之后,即執(zhí)行步驟104,此一步驟是判斷是否有除錯(cuò)狀況(Debug Exception)產(chǎn)生,若無(wú),則繼續(xù)重復(fù)測(cè)試,若有,則執(zhí)行下一步驟105,進(jìn)一步判斷中央處理器中除錯(cuò)狀態(tài)寄存器DR6的狀態(tài),該除錯(cuò)狀態(tài)寄存器DR6中是用來(lái)暫存斷點(diǎn)寄存器DR0-DR3的狀態(tài)。
在步驟105中,判斷中央處理器的除錯(cuò)狀態(tài)暫存器DR6中的對(duì)應(yīng)中斷點(diǎn)條件(Breakpoint Condition)是否被設(shè)定。若無(wú),則回到步驟104,若有,則進(jìn)行下一步驟106。
在步驟106中,判斷中央處理器目前所執(zhí)行的指令是否為組合語(yǔ)言中執(zhí)行數(shù)據(jù)轉(zhuǎn)移的輸出指令(OUT或OUTS)。若不是,則回到步驟104,若是,則進(jìn)行下一步驟107。其中該輸出指令OUT在組合語(yǔ)言指令中乃為簡(jiǎn)單的輸出入界面指令,是執(zhí)行簡(jiǎn)單數(shù)據(jù)的轉(zhuǎn)移,其數(shù)據(jù)轉(zhuǎn)移的對(duì)象是一序列的輸出入端,其在進(jìn)行數(shù)據(jù)的轉(zhuǎn)移時(shí),是經(jīng)過(guò)中央處理器中的通用目的寄存器(例如8位時(shí)乃為寄存器AL)來(lái)進(jìn)行數(shù)據(jù)的轉(zhuǎn)移。而輸出指令OUTS乃為字符串輸出入界面指令,該指令將由中央處理器中的段寄存器DS與指標(biāo)寄存器SI所指定的存儲(chǔ)器字節(jié)數(shù)據(jù)輸出到由寄存器DX所指定的輸出入界面端中。
在步驟107中,進(jìn)一步判斷中央處理器中通用目的寄存器10中的寄存器AL或DS:SI地址的數(shù)據(jù)(輸出入端地址直接定址或寄存器間接定址)是否為CAh、CBh、或30h、31h、或C5h。若并非這些預(yù)定值,則回到步驟104,若恰為這些預(yù)定值,則進(jìn)行下一步驟108。其中該數(shù)值CAh、CBh是表示寫入數(shù)據(jù)至一DMA通道,30h、31h是表示寫入數(shù)據(jù)至一磁區(qū)、C5h是表示寫入數(shù)據(jù)至數(shù)個(gè)磁區(qū)的動(dòng)作。
經(jīng)前述步驟的判斷之后,若恰為寫入數(shù)據(jù)至DMA或磁區(qū)時(shí),即表示有可能為病毒程序正在執(zhí)行將病毒碼寫入的動(dòng)作。此時(shí),在步驟108中,最后再判斷輸出入端的1F3h-1F6h(或173h-176h)的磁區(qū)地址是否恰為硬盤的引導(dǎo)區(qū)(boot sector)。若判斷結(jié)果為是,則即代表可能即為病毒程序正在執(zhí)行將病毒碼寫入至硬盤引導(dǎo)區(qū)的動(dòng)作。此時(shí),即可由計(jì)算機(jī)系統(tǒng)發(fā)出警示,步驟109,以警示使用者。
由以上的病毒檢測(cè)方法以及利用中央處理單元中相關(guān)的控制寄存器、斷點(diǎn)寄存器、除錯(cuò)控制寄存器、除錯(cuò)狀態(tài)寄存器,使本發(fā)明可以有效早期檢測(cè)到任何企圖寫入至計(jì)算機(jī)系統(tǒng)的硬盤引導(dǎo)區(qū)的病毒,一旦檢測(cè)到該開(kāi)機(jī)型病毒后,即可發(fā)出一警告,以適時(shí)警告使用者該計(jì)算機(jī)可能已感染到開(kāi)機(jī)型病毒。在實(shí)際的應(yīng)用時(shí),本發(fā)明的方法可以以控制軟件的型態(tài)在計(jì)算機(jī)系統(tǒng)中執(zhí)行其病毒檢測(cè)的功能,也可存錄至一個(gè)人計(jì)算機(jī)的系統(tǒng)固件(Firmware)中,而提供計(jì)算機(jī)系統(tǒng)的即時(shí)病毒檢測(cè)功能。
總之,本發(fā)明所提供的開(kāi)機(jī)型病毒檢測(cè)方法,具有高度的產(chǎn)業(yè)利用價(jià)值,可達(dá)到預(yù)期的功效。
權(quán)利要求
1.一種開(kāi)機(jī)型病毒檢測(cè)方法,用以檢測(cè)一開(kāi)機(jī)型病毒碼是否寫入至一計(jì)算機(jī)系統(tǒng)的硬盤裝置的引導(dǎo)區(qū),該計(jì)算機(jī)系統(tǒng)中包括有一中央處理器,經(jīng)一輸出入界面與該硬盤裝置連接,該中央處理器內(nèi)部配置有控制寄存器、斷點(diǎn)寄存器、除錯(cuò)控制寄存器、除錯(cuò)狀態(tài)寄存器,該檢測(cè)方法包括下列步驟a.在該中央處理器之一控制寄存器中設(shè)定除錯(cuò)擴(kuò)展位,以啟動(dòng)輸出入斷點(diǎn)除錯(cuò)擴(kuò)展功能;b.在該中央處理器的斷點(diǎn)寄存器中設(shè)定該計(jì)算機(jī)系統(tǒng)所連接硬盤裝置的硬盤狀態(tài)/命令寄存器的地址;c.在除錯(cuò)控制寄存器中,設(shè)定該中央處理器在執(zhí)行輸出入界面動(dòng)作時(shí),產(chǎn)生中斷功能、以及設(shè)定位長(zhǎng)度值;d.判斷是否發(fā)生除錯(cuò)狀況;e.判斷中央處理器的除錯(cuò)狀態(tài)寄存器中的對(duì)應(yīng)的斷點(diǎn)條件是否被設(shè)定;f. 判斷中央處理器目前所執(zhí)行的指令是否為執(zhí)行數(shù)據(jù)轉(zhuǎn)移的輸出指令;g.判斷中央處理器中,輸出入端地址直接定址或寄存器間接定位的地址數(shù)據(jù)是否為寫入數(shù)據(jù)至硬盤裝置的地址;h.判斷輸出入端的地址是否恰為硬盤裝置引導(dǎo)區(qū)的地址;i.發(fā)出警示。
2.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟b包括下列步驟b1.設(shè)定第一個(gè)硬盤狀態(tài)/命令寄存器的地址數(shù)值;以及b2.設(shè)定第二個(gè)硬盤狀態(tài)/命令寄存器的地址數(shù)值。
3.如權(quán)利要求2所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中該第一個(gè)硬盤狀態(tài)/命令寄存器的地址數(shù)值為01F7h,而該第二個(gè)硬盤狀態(tài)/命令寄存器的地址數(shù)值為0177h。
4.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟c包括下列步驟c1.在中央處理器的除錯(cuò)控制寄存器的讀取/寫入控制位中設(shè)定一預(yù)定數(shù)值;以及c2.在該除錯(cuò)控制寄存器的長(zhǎng)度設(shè)定位中設(shè)定數(shù)值位長(zhǎng)度。
5.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟f的數(shù)據(jù)轉(zhuǎn)移輸出指令為OUT/OUTS。
6.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟g中寫入數(shù)據(jù)至硬盤裝置的地址值包括有寫入數(shù)據(jù)至DMA通道的地址。
7.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟g中寫入數(shù)據(jù)至硬盤裝置的地址值包括有寫入數(shù)據(jù)至一磁區(qū)的地址。
8.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟g中寫入數(shù)據(jù)至硬盤裝置的地址值包括有寫入數(shù)據(jù)至數(shù)個(gè)磁區(qū)的地址。
9.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟h中輸出入端的地址為1F3h~1F6h。
10.如權(quán)利要求1所述的開(kāi)機(jī)型病毒檢測(cè)方法,其中步驟h中輸出入端的地址為173h~176h。
全文摘要
開(kāi)機(jī)型病毒檢測(cè)方法,在計(jì)算機(jī)系統(tǒng)的相關(guān)寄存器中設(shè)定預(yù)定數(shù)值數(shù)據(jù),含設(shè)定除錯(cuò)擴(kuò)展位、設(shè)定硬盤裝置的硬盤狀態(tài)/命令寄存器的地址、設(shè)定中央處理器在執(zhí)行輸出入界面動(dòng)作時(shí)產(chǎn)生中斷功能、設(shè)定位長(zhǎng)度值。發(fā)生除錯(cuò)時(shí),判斷中央處理器的除錯(cuò)狀態(tài)寄存器中的斷點(diǎn)條件是否被設(shè)定,再判斷中央處理器目前執(zhí)行的指令是否執(zhí)行數(shù)據(jù)轉(zhuǎn)移的輸出指令、判斷輸出入端地址直接定址或寄存器間接定址的地址數(shù)據(jù)是否為定入數(shù)據(jù)至硬盤裝置的地址、判斷輸出入端地址是否為硬盤裝置引導(dǎo)區(qū)的地址,若是,發(fā)出警示。
文檔編號(hào)G06F11/28GK1304093SQ0010104
公開(kāi)日2001年7月18日 申請(qǐng)日期2000年1月11日 優(yōu)先權(quán)日2000年1月11日
發(fā)明者蔡俊男 申請(qǐng)人:神達(dá)電腦股份有限公司