开机型病毒检测方法

文档序号:6453623阅读:472来源:国知局
专利名称:开机型病毒检测方法
技术领域
本发明涉及一种计算机病毒的检测方法,特别涉及一种检测开机型计算机病毒的方法。
在各种类型的计算机病毒中,都有其特有的病毒型态、传播途径,这些计算机病毒对一计算机系统而言,都会造成不同程度的破坏。典型的开机型计算机病毒型态一般都是感染一计算机系统中硬盘装置的引导区(BootSector),并利用这些区域作为传布的媒介。
为了要检测计算机病毒,有许多种检测方法被提出。例如当一待执行的程序要在计算机中执行时,首先会执行一自我测试,以判断该程序是否已被修改过,若该程序码已被修改过,则即表示该程序可能已受到计算机病毒的感染。另一种方法是以检查和(Check Sum)的方式,在执行程序之前,会首先进行检查和的核对,如此以判别该程序是否已被修改过。
虽然上述的病毒检测方法,皆能达到某一程度的效果,但其前提要件是计算机系统必需完成正常的启动程序之后,才有可能执行该病毒检测的功能。亦即,这些病毒检测方法并无法适用于某些开机型的病毒检测。
在开机型的病毒方面,其病毒程序是存在于可执行启动的数据存储装置(例如一硬盘装置)的引导区中。当利用感染有开机型病毒的硬盘执行计算机系统的启动时,该病毒程序即会被载入至计算机系统存储器中,并执行其病毒功能。
在大部分的开机型计算机病毒中,一旦该病毒程序取代正常的启动程序之后,首先会拦截中断向量INT 13h,该中断向量的功能是控制硬盘/软盘的存取功能。当拦截到该中断向量INT 13h时,该病毒程序会改变该中断向量的向量地址,并以一新的辅程序取代该中断向量的功能,并以该新的辅程序作为病毒传布的途径。一般而言,该开机型病毒会在计算机电源开启状态中,一直存在计算机系统中,并在每一次计算机重新启动时,都会重复执行前述病毒的感染。因此,若无法在计算机系统启动初期即有效检测该开机型病毒的话,则对于计算机的使用及数据的安全性将会有极大的威胁。
本发明的主要目的是提供一种检测开机型病毒的方法,当本发明的方法检测到任何企图写入到计算机系统的硬盘引导区的动作时,即可发出一警告,以适时警告使用者该计算机可能已感染到开机型病毒。
本发明的另一目的是提供一种早期检测开机型病毒的方法,该方法直接利用中央处理单元中相关的控制寄存器、断点寄存器、除错控制寄存器、除错状态寄存器等来执行病毒的检测。
为达到本发明的上述目的,首先是在该中央处理器的一控制寄存器中设定除错扩展位;在该中央处理器的断点寄存器中设定该计算机系统所连接硬盘装置的硬盘状态/命令寄存器的地址;在除错控制寄存器中,设定该中央处理器在执行输出入界面动作时,产生中断功能、以及设定位长度值;判断是否发生除错状况;判断中央处理器的除错状态寄存器中的对应的断点条件是否被设定;判断中央处理器目前所执行的指令是否为执行数据转移的输出指令;判断中央处理器中,输出入端地址直接定址或寄存器间接定址的位数据是否为写入数据至硬盘装置的地址;判断输出入端的地址是否恰为硬盘装置引导区的地址,若是的话即发出警示,以警告使用者该计算机可能已感染到开机型病毒。
本发明的其它目的及其进一步的病毒检测方法,将由以下的较佳实施例说明并结合附图,作进一步的说明,其中

图1是显示一典型个人计算机系统中,中央处理单元、输出入界面、硬盘装置、存储器间的简略连接示意图;图2是显示一Pentium级中央处理器内部相关寄存器的示意图;图3是显示本发明病毒检测方法的流程图。
图1是显示一典型个人计算机系统中,中央处理单元1、输出入界面3、硬盘装置4、存储器5间的简略连接示意图,其中该中央处理单元1经由系统总线及输出入界面3而与硬盘装置4连接,而中央处理单元1则经由该系统总线而与一存储器5相连接。其中该系统总线包括有地址总线21、数据总线22、及控制总线23。
在以下的实施例中,是以Intel公司Pentium级中央处理器作一较佳实施例说明,且该硬盘装置4是经一IDE界面而与中央处理器1相连接。
参照图2所示,在一典型的Pentium级中央处理器内部依其功能约略可分为通用目的寄存器10(General Purpose Register)、段寄存器11(SegmentRegister)、状态及指令寄存器12(Status and Instruction Register)。其中该通用目的寄存器10一般是用来处理字节数据,段寄存器11是用来决定存储器地址段的基底地址,状态及指令寄存器12是用来指定欲执行指令、以及指示在执行指令后的结果状态。
此外,在Pentium级中央处理器内部尚包括有其它系统寄存器,这些系统寄存器中,与本发明的病毒检测方法有关的寄存器包括有控制寄存器组13及除错寄存器组14。
控制寄存器组13中包括有数个控制寄存器CR0~CR4,其中控制寄存器CR4的位定义中,共有位0至位6,其中的位3乃为除错扩展功能的设定位,当该位设定为1时,乃启动输出入界面断点除错扩展功能,当该位设定为0时,乃解除输出入界面断点除错扩展功能。
除错寄存器组14中包括有数个寄存器DR0~DR7,其中的DR0~DR3是作为断点寄存器,每一个断点寄存器中含32位的断点线性地址。DR6是作为除错状态寄存器,其可用来暂存该断点寄存器DR0~DR3的状态。DR7是作为一除错控制寄存器(Debug Control Register),其是用来控制该断点寄存器DR0~DR3的动作。
每一个断点寄存器DR0~DR3都有一些各自的控制位(在除错控制寄存器DR7中),例如LEN的值决定在断点地址的存取长度,当LEN=00时,字节;LEN=01语句LEN=11双语句。R/W的值决定在断点地址上发生断点的原因,R/W=00,指令码存取;R/W=01,数据写入R/W=11,数据读取与写入。
以下将同时参照图2所示的中央处理器内部寄存器组结构及图3所示的控制流程图,对本发明的病毒检测方法作一详细说明如后。
在系统启始后,本发明首先在步骤101中,在中央处理器的控制寄存器CR4中设定除错扩展位(Debug Extention)。此一步骤中即是将中央处理器中的控制寄存器CR4的第三位设定为1,以启动输出入断点除错扩展功能。
然后在中央处理器的断点寄存器(DR0-DR3)中的任两个寄存器中设定十六进位数值数据1F7h及177h,步骤102。其中该数值1F7h是表示计算机系统中所连接的第一个硬盘状态/命令寄存器的地址,而数值177h乃为第二个硬盘状态/命令寄存器的地址。
在步骤103中,在中央处理器的除错控制寄存器DR7对应的R/W位(读取/写入控制位)中设定数值10,其意为当中央处理器在执行输出入时,会执行中断功能。此外,在此一步骤中,也在该除错控制寄存器DR7对应的LEN位(长度位)中设定数值00(其数值是代表位长度值是1位)。
在完成上述的相关寄存器数据设定之后,即执行步骤104,此一步骤是判断是否有除错状况(Debug Exception)产生,若无,则继续重复测试,若有,则执行下一步骤105,进一步判断中央处理器中除错状态寄存器DR6的状态,该除错状态寄存器DR6中是用来暂存断点寄存器DR0-DR3的状态。
在步骤105中,判断中央处理器的除错状态暂存器DR6中的对应中断点条件(Breakpoint Condition)是否被设定。若无,则回到步骤104,若有,则进行下一步骤106。
在步骤106中,判断中央处理器目前所执行的指令是否为组合语言中执行数据转移的输出指令(OUT或OUTS)。若不是,则回到步骤104,若是,则进行下一步骤107。其中该输出指令OUT在组合语言指令中乃为简单的输出入界面指令,是执行简单数据的转移,其数据转移的对象是一序列的输出入端,其在进行数据的转移时,是经过中央处理器中的通用目的寄存器(例如8位时乃为寄存器AL)来进行数据的转移。而输出指令OUTS乃为字符串输出入界面指令,该指令将由中央处理器中的段寄存器DS与指标寄存器SI所指定的存储器字节数据输出到由寄存器DX所指定的输出入界面端中。
在步骤107中,进一步判断中央处理器中通用目的寄存器10中的寄存器AL或DS:SI地址的数据(输出入端地址直接定址或寄存器间接定址)是否为CAh、CBh、或30h、31h、或C5h。若并非这些预定值,则回到步骤104,若恰为这些预定值,则进行下一步骤108。其中该数值CAh、CBh是表示写入数据至一DMA通道,30h、31h是表示写入数据至一磁区、C5h是表示写入数据至数个磁区的动作。
经前述步骤的判断之后,若恰为写入数据至DMA或磁区时,即表示有可能为病毒程序正在执行将病毒码写入的动作。此时,在步骤108中,最后再判断输出入端的1F3h-1F6h(或173h-176h)的磁区地址是否恰为硬盘的引导区(boot sector)。若判断结果为是,则即代表可能即为病毒程序正在执行将病毒码写入至硬盘引导区的动作。此时,即可由计算机系统发出警示,步骤109,以警示使用者。
由以上的病毒检测方法以及利用中央处理单元中相关的控制寄存器、断点寄存器、除错控制寄存器、除错状态寄存器,使本发明可以有效早期检测到任何企图写入至计算机系统的硬盘引导区的病毒,一旦检测到该开机型病毒后,即可发出一警告,以适时警告使用者该计算机可能已感染到开机型病毒。在实际的应用时,本发明的方法可以以控制软件的型态在计算机系统中执行其病毒检测的功能,也可存录至一个人计算机的系统固件(Firmware)中,而提供计算机系统的即时病毒检测功能。
总之,本发明所提供的开机型病毒检测方法,具有高度的产业利用价值,可达到预期的功效。
权利要求
1.一种开机型病毒检测方法,用以检测一开机型病毒码是否写入至一计算机系统的硬盘装置的引导区,该计算机系统中包括有一中央处理器,经一输出入界面与该硬盘装置连接,该中央处理器内部配置有控制寄存器、断点寄存器、除错控制寄存器、除错状态寄存器,该检测方法包括下列步骤a.在该中央处理器之一控制寄存器中设定除错扩展位,以启动输出入断点除错扩展功能;b.在该中央处理器的断点寄存器中设定该计算机系统所连接硬盘装置的硬盘状态/命令寄存器的地址;c.在除错控制寄存器中,设定该中央处理器在执行输出入界面动作时,产生中断功能、以及设定位长度值;d.判断是否发生除错状况;e.判断中央处理器的除错状态寄存器中的对应的断点条件是否被设定;f. 判断中央处理器目前所执行的指令是否为执行数据转移的输出指令;g.判断中央处理器中,输出入端地址直接定址或寄存器间接定位的地址数据是否为写入数据至硬盘装置的地址;h.判断输出入端的地址是否恰为硬盘装置引导区的地址;i.发出警示。
2.如权利要求1所述的开机型病毒检测方法,其中步骤b包括下列步骤b1.设定第一个硬盘状态/命令寄存器的地址数值;以及b2.设定第二个硬盘状态/命令寄存器的地址数值。
3.如权利要求2所述的开机型病毒检测方法,其中该第一个硬盘状态/命令寄存器的地址数值为01F7h,而该第二个硬盘状态/命令寄存器的地址数值为0177h。
4.如权利要求1所述的开机型病毒检测方法,其中步骤c包括下列步骤c1.在中央处理器的除错控制寄存器的读取/写入控制位中设定一预定数值;以及c2.在该除错控制寄存器的长度设定位中设定数值位长度。
5.如权利要求1所述的开机型病毒检测方法,其中步骤f的数据转移输出指令为OUT/OUTS。
6.如权利要求1所述的开机型病毒检测方法,其中步骤g中写入数据至硬盘装置的地址值包括有写入数据至DMA通道的地址。
7.如权利要求1所述的开机型病毒检测方法,其中步骤g中写入数据至硬盘装置的地址值包括有写入数据至一磁区的地址。
8.如权利要求1所述的开机型病毒检测方法,其中步骤g中写入数据至硬盘装置的地址值包括有写入数据至数个磁区的地址。
9.如权利要求1所述的开机型病毒检测方法,其中步骤h中输出入端的地址为1F3h~1F6h。
10.如权利要求1所述的开机型病毒检测方法,其中步骤h中输出入端的地址为173h~176h。
全文摘要
开机型病毒检测方法,在计算机系统的相关寄存器中设定预定数值数据,含设定除错扩展位、设定硬盘装置的硬盘状态/命令寄存器的地址、设定中央处理器在执行输出入界面动作时产生中断功能、设定位长度值。发生除错时,判断中央处理器的除错状态寄存器中的断点条件是否被设定,再判断中央处理器目前执行的指令是否执行数据转移的输出指令、判断输出入端地址直接定址或寄存器间接定址的地址数据是否为定入数据至硬盘装置的地址、判断输出入端地址是否为硬盘装置引导区的地址,若是,发出警示。
文档编号G06F11/28GK1304093SQ0010104
公开日2001年7月18日 申请日期2000年1月11日 优先权日2000年1月11日
发明者蔡俊男 申请人:神达电脑股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1