CN1068205A - 微机病毒防治的软件自保护方法 - Google Patents
微机病毒防治的软件自保护方法 Download PDFInfo
- Publication number
- CN1068205A CN1068205A CN 91108643 CN91108643A CN1068205A CN 1068205 A CN1068205 A CN 1068205A CN 91108643 CN91108643 CN 91108643 CN 91108643 A CN91108643 A CN 91108643A CN 1068205 A CN1068205 A CN 1068205A
- Authority
- CN
- China
- Prior art keywords
- virus
- software
- shell
- file
- former
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
一种用于微机病毒防治的软件自保护方法,其特
征在于以附着在原软件上的程序段作保护性外壳,在
软件运行过程中,该程序段先于软件原文运行,外壳
中记录有原软件文件长度,运行入口等特征参数,外
壳在运行时,根据记录的特征参数与现时特征参数之
间的差异检测出病毒并予以消除,同时,清理被感染
的内存空间,此种方法对病毒防治无须人工进行对病
毒针对性的研究,对病毒的新种及变种均能完全防
治,时间、空间代价小,效率高。
Description
本发明涉及一种防治计算机病毒的方法,特别是一种用于微机病毒防治的软件自保护方法,其特征在于以附着在原软件上的程序段作保护性外壳,该外壳中记录了原软件的特征参数,在软件运行过程中,外壳对软件进行检查,发现有病毒侵染,则对软件进行恢复。
目前,计算机病毒泛滥成灾,现有的防治计算机病毒的方法是阅读反汇编后的病毒程序代码,了解病毒对软件的破坏过程,并且找出该病毒用于自我识别的标志段,将各种病毒的标志段组成一个标志库。当对软件进行检查时,就根据标志库中的各标志逐一扫描软件,发现匹配后,就可查明原软件感染了何种病毒,然后,根据对这种病毒对软件破坏过程的了解,施加病毒破坏过程的逆过程,从而恢复原软件。可以看出,现有病毒防治技术有三个主要缺点:1、事后性,即一个病毒已经广泛传播,造成破坏以后,才被查觉,加以研究,而此时,许多损失已无法挽回;2、重复性,即对一个新病毒以及旧病毒的变种(哪怕仅仅是文件数据区的改动或加密上的小改变)都得逐一进行针对性研究,而且,由于目前许多病毒新种及变种的代码中设计了许多反跟踪技术,可读性很差,病毒代码的阅读工作量很大,再加上有的病毒将原软件的部分内容移至它处,加密存贮,因此,要了解病毒对软件破坏的全过程以求得恢复原软件所需的逆过程就相当困难;3、时间开销大,效率低,这是因为现有技术对软件的检查和修复实际上是对标志库中标志求匹配过程,此过程须经过大量的比较、判断操作,由于病毒新种和变种的涌现,标志库的日益庞大,此过程的时间开销也越来越大,效率很低。
本发明提供的病毒防治方法就是针对现有技术的上述缺点而提出的,它的目的在于病毒的检测以及消除均由软件在运行中由自身的保护外壳完成,原软件的恢复由病毒代劳,保护外壳则根据其记录的原软件的文件长度、运行人口等特征参数,将附着在软件上的病毒成分切除,无论病毒的新种和变种,均无须阅读病毒代码进行针对性的研究,感染了病毒的软件一运行则自动将病毒消除,这样,对病毒新种来说,也即切断了其传播途径,避免新病毒造成破坏。由于病毒的消除是软件自身在运行过程中进行的,并且病毒的检测、文件的恢复过程中无现有技术中的大量比较、判别操作,因此实现这种软件自保护防治病毒方法的时间、空间开销均很小。
本发明为达到上述目的的具体方案是:在软件上附着一个程序段作保护性外壳,并且该程序段先于软件原文运行,外壳中记录有原软件文件长度、运行人口等特征参数。一个接受外壳保护后的软件,如果受到病毒感染,病毒部分则附着在外壳的外面,外观反应则表现在文件长度变长,运行人口变化以及软件部分正文内容变化等,当外壳程序得到控制运行时,外壳将记录的软件特征参数与目前磁盘上文件之现时特征参数比较,若有变化,则证明受到了病毒感染,这样,就完成了病毒的检测功能。对于任何一种病毒,为了保证在侵染软件后不至于影响原软件的运行,程序调入内存运行后,病毒在完成自身的初始化、驻留以及其它工作后,均要将其破坏的原软件内容恢复,并且将控制权交于原软件,使原软件开始运行。在接受外壳保护的软件运行中,病毒是将控制权交于外壳保护程序人口,这样,外壳程序得到控制并检测出文件受病毒感染时,内存中已有了由病毒恢复了的原被破坏的软件内容,因此,外壳只需按其记录的原软件特征参数将内存中软件的正确部分恢复磁盘上的软件中病毒破坏了的部分,就完成了软件病毒消除中最关键的原软件恢复工作,病毒程序附着在原软件后面,因此,外壳根据记录的原软件长度截短软件,就消去了病毒代码,回收了病毒占用的空间。这里,病毒的检测与消除与病毒的种类以及其对软件的具体破坏过程无关,因此,这种方法巧妙地回避了对病毒的辨识,所有病毒同样地对待。同时,这种方法还可对病毒运行破坏的内存进行恢复。这是因为病毒程序都是通过修改中断向量以取得控制,进行破坏和传播的。不管一个软件本身是否有修改中断操作,在软件调入内存运行起至外壳开始运行止,内存中是不会有对中断的修改操作的,如果有,一定是附着在外壳外面的病毒程序所为,因此,外壳还可以检查出各中断向量的变化,若有,则按软件刚调入内存时的向量地址值恢复,至于软件刚调入内存时的向量地址可由一个驻留在内存中的程序在每次执行程序调入操作时先行保留,这个程序本身也可包含在外壳中,当第一个接受外壳保护的软件运行时驻留内存,这样,即可与后面的外壳程序配合,完成内存清理功能。
从以上方案中可以看出,本发明提供的方法确定达到了设想的目的要求,它的优点主要反映在:1、病毒防治的主动性,即病毒的检测及消除由软件本身在运行中自动进行,这样,一有病毒感染,立刻消除,克服了现有技术中的事后性;2、可以防治病毒的新种及变种,对任何病毒均无须人工进行针对性研究,避免了大量人力的消耗;3、由于本方法原理简单,因此,时间、空间代价很小,性能可靠,效率高。
本发明的具体方法由以下的实施例及其附图给出。
图1是引导扇保护性外壳流程框图;
图2是给.COM型文件及.EXE型文件加保护外壳流程框图;
图3是COMMAND.COM专用保护外壳流程框图;
图4是.EXE文件及.COM文件保护外壳流程框图;
图5是EXEC预处理流程框图。
本发明的实例采用8086/8088汇编语言,在IBMPC及其兼容机上实现,操作系统MS-DOS2.0以上版本。
微机病毒包括操作系统型和可执行文件型。
对于操作系统型病毒,由于其感染目标单一、固定,因此它的发现和消除比较简单。软盘引导扇保护多用贴保护签的方法,这种方法已被证明行之有效。因此,防此类病毒的关键是防止硬盘的感染,因为配置了硬盘的机器一般均由硬盘起动。硬盘无法贴保护签,有一定弱点,但其也有特点,即相对固定性,一台机器的硬盘长期归其所有,不移动,因此,在给硬盘引导扇加保护外壳时,同时记录上该硬盘所属机器中ROM13号中断(磁盘读写中断)向量地址备用。引导扇病毒在运行完成自身驻留后,均须将原引导扇内容移至内存0:7COOH起始处并交出控制权。而保护性外壳则在其每次运行时,利用保留的ROM13号中断向量地址,将其所保护的原引导扇内容与目前盘上引导扇内容比较,相同则继续运行下面的机器起动例程,不相同则将原内容写回引导扇区,从而将正确的引导扇恢复。硬盘引导扇包括总引导扇和分区引导扇。对总引导扇,剩余空间较大,足以容纳保护外壳,分区引导扇适当压缩显示信息后也可顺利加入保护外壳,这样空间上无额外开销。(这里的压缩显示信息是指引导出错时机器显示信息统一成“system start fall.”)。引导扇保护外壳的作用流程框图见附图1。
防治微机计算机病毒的重点是可执行文件的保护及病毒消除,可执行文件包括.COM型和.EXE型。病毒感染后的文件大多情况下能正常运行,发现不易。因此,在程序中加上保护性外壳并从外壳开始运行,这样就能及时发现、消除病毒。病毒感染后的文件表现为长度变长、有的开始几条语句有变化、.EXE文件头部被改写等。总之,病毒感染后的文件总是有痕迹的。由于.COM型和.EXE型可执行文件结构的差异,需分别对待。
.COM型文件目标代码不能重定位,直接是文件执行时的内存映象,长度固定于一段(64K)以内,并且文件的执行规定从该段100H处执行。病毒为保证原来的文件能够正确执行,在病毒程序完成了修改中断向量并驻留后,需要将原.COM文件代码从100H处恢复,因此,在保护性外壳得到控制后,就将病毒恢复后的文件内容与磁盘上的内容作比较,如有差异,则按保留的文件原长度将内存中恢复的原文件写回磁盘,从而截去文件感染病毒后增加的内容,即消除了病毒恢复了文件。
.EXE型文件目标代码可以重定位,并且有一个称之为文件头的部分,其中包括文件长度、入口地址等信息,在给文件加保护性外壳时,已将这些关键内容保留起来备用。病毒程序感染后,是将文件长度和入口地址信息修改,并将入口地址指向新增加的病毒程序部分,在执行完病毒程序以后,再将原环境恢复,并将控制交于原入口地址处。因此,在保护性外壳接到控制后,将保留的文件头内容与磁盘上的文件头内容比较,若有不同,则按保留的内容恢复文件头,并截短磁盘上文件至原长度,从而消除了病毒,恢复了文件。
从以上说明中可以看出,保护性外壳的优点是显而易见的,内存中程序运行前的恢复由病毒代劳。假若去研究一个具体病毒,经常会发现跟踪分析一个病毒十分困难,病毒常将文件的某些字节搬走,并进行加密,要找到并恢复十分困难。而保护性外壳的方法省去了许多重复性的劳动,以逸待劳,对已知、未知病毒及其变种具有普适性。对.COM文件和.EXE文件加保护外壳可由程序实现,框图见附图2。
以上说明了保护性外壳的作用机理。在具体实现中,为了避免病毒干扰以及最大限度上的保证内存程序运行的连续性,设计中采用了一个中断表区以记录最近期未被感染的中断向量内容以及设立了三个标志位a,b,c。a表示运行的每一个文件是否均已有保护外壳,“0”有效。b为文件外壳有效运行后的反馈信息,“0”有效。c则为内存中病毒是否有存在可能的标志,“1”有效。具体实现中,首先考虑到COMMAND.COM作为系统命令处理文件地位的特殊性,它是系统起动后其它文件调入执行的命令处理者。因此,它的保护外壳除了检测自身是否受感染并在发现感染病毒后自行恢复外,还加入了为保证以后内存和程序运行连续性的其它内容。COMMAND.COM文件外壳首先从环境块中取得其自身入口即确定其从何处调入,然后将自身换名为AASS.TST,并将其打开为读/写方式,将文件指针移至文件末尾,确定文件长度,并与外壳中保留的长度相比较,若不相等,则将指针移至文件头,在确认内存中程序已由病毒代劳恢复后将磁盘上文件头几个被改动字节恢复,再将指针移至原长度位置处,截除多余的内容,关闭文件,换回原名,提示重新启动。若文件长度检查后与原长度相等,则关闭文件,换回原名,将保护外壳中部分内容自举至内存高端存放,开辟一个1024字节的中断表区,并将OFOH中断向量指向该表以备用。然后,修改中断21H中EXEC功能调用(即程序加载并执行功能调用),使其指向COMMAND.COM外壳中EXEC预处理部分,然后,将此时中断向量填入中断表区,并将标志a置“0”,b置“1”,c置“0”。最后,控制权交于例行的COMMAND.COM处理例程。COMMAND.COM专用保护外壳流程框图见附图3。
.COM型文件中的保护性外壳得到控制后,首先检查c标志以核正目前内存中是否已可能有了病毒,若可能性不存在,即c=0,则比较目前各中断向量内容与中断表区中所存贮的内容是否一致,若不一致,则按中断表区中内容恢复各中断向量;若c=1,则不改变目前各中断向量。然后,从环境块中得到自身入口,利用中断表区中存贮的各中断向量参数打开自身文件为读/写方式,移动指针至文件尾,得到文件长度并与外壳中所存的内容比较,若相等则置标志b为0,关闭文件,控制权交给原文件例程,若不相等,则指针移至文件开头,恢复文件中被破坏的若干字节,然后指针移至文件原长度处,截去其后多余的内容(即病毒),关闭文件,并置标志b为0,再将控制权交给原文件例程。.COM文件保护外壳流程框图见附图4。
.EXE文件中的保护性外壳与.COM文件中的大同小异。在外壳得到控制后,同样先检查c标志,若c=0则比较目前各中断向量内容与中断表区中所存贮的内容是否一致,若不一致,则按中断表区中内容恢复各中断向量;若c=1,则不改变目前各中断向量。然后,从环境块中得到自身入口,利用中断表区中存贮的各中断向量参数,打开自身文件为读/写方式,移动指针至文件尾,得到文件长度,与外壳中所存贮的内容比较,若相等则置标志b为0,关闭文件,控制权交给原文件例程。若不相等,则指针移至文件开头,利用外壳中存贮的原文件头内容恢复文件头,然后指针移至文件原长度处,截去其后多余内容(即病毒),关闭文件,并置标志b为0,再将控制权交给原文件例程。.EXE文件保护外壳流程框图见附图4。
a、b、c三个标志的设立是为了保证内存中程序运行的连续性,所谓内存中程序运行的连续性是指内存中无病毒破坏成份,程序运行不会因病毒破坏而中断。a、b、c三个标志中,b标志为各文件外壳的反馈,而a、c标志则由COMMAND.COM文件外壳中的EXEC预处理部分进行相应的置位和复位。预处理部分对每一个加载入内存并运行的文件先检查保护外壳标记,若出现了一个可执行文件无此标记,则将a置位。软件保护外壳设计中保证的最大限度的内存中程序运行的连续性表现在如果运行的每一个程序均接受过外壳的保护(即使在某次运行时因为某种原因还未执行外壳程序就退出运行,例如,某些病毒就利用这种方法驻留内存),文件运行中,感染后的文件不仅自身能得到恢复,同时,内存中的病毒成份也能得到消除即同时保证内存的安全性。这是由外壳程序的设计决定的。首先中断表区保留的始终是肯定未受感染的中断向量,而病毒感染文件后病毒部分总是附着在外壳之外,因此,当外壳得到控制运行时发现了从文件调入至外壳执行期间发生了修改中断向量操作,肯定是由于病毒的原因。这样,通过中断表区保留数据对各中断向量恢复,就保证消除了内存中的病毒成份得到控制而发作的可能性,也即消除了内存中的病毒成份。这里“c”标志就反映了内存的安全性即病毒存在的可能性。可以看出,文件保护外壳在文件普遍接受外壳保护的情况下的作用是双重的,即同时保证了文件本身及计算机内存的安全。只有当运行了一个未受外壳保护的程序,并且该程序有修改中断向量的操作(即有类病毒操作),c标志才置位,从而表明这时内存安全出现了不定性。但是,即使在这种情况下,对文件来说,外壳的保护作用仍保持不变,仍然能做到自保护。接受保护外壳保护的文件本身在任何情况下的完全性是始终保证的。预处理部分流程框图见附图5。
以上所述构成了用于微机病毒防治的软件自保护方法实例。
Claims (1)
1、一种用于微机病毒防治的软件自保护方法,其特征在于以附着在需保护的原软件上的程序段作保护性外壳,在软件运行时,该程序段先于软件原文运行,外壳中记录有原软件文件长度、运行入口等特征参数,外壳在运行时,根据记录的特征参数检查软件,使受病毒侵害的软件恢复原状,同时清理受病毒感染的内存、切断病毒的传播。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 91108643 CN1068205A (zh) | 1991-08-28 | 1991-08-28 | 微机病毒防治的软件自保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 91108643 CN1068205A (zh) | 1991-08-28 | 1991-08-28 | 微机病毒防治的软件自保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1068205A true CN1068205A (zh) | 1993-01-20 |
Family
ID=4909395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 91108643 Pending CN1068205A (zh) | 1991-08-28 | 1991-08-28 | 微机病毒防治的软件自保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1068205A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299202C (zh) * | 2002-10-10 | 2007-02-07 | 国际商业机器公司 | 抗病毒网络系统和方法 |
CN102136050A (zh) * | 2011-04-14 | 2011-07-27 | 北京思创银联科技股份有限公司 | 一种提高电脑理财安全性的系统及方法 |
CN106560833A (zh) * | 2016-07-22 | 2017-04-12 | 哈尔滨安天科技股份有限公司 | 一种基于文件头检测感染式病毒的方法及系统 |
-
1991
- 1991-08-28 CN CN 91108643 patent/CN1068205A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299202C (zh) * | 2002-10-10 | 2007-02-07 | 国际商业机器公司 | 抗病毒网络系统和方法 |
US7437760B2 (en) | 2002-10-10 | 2008-10-14 | International Business Machines Corporation | Antiviral network system |
US7739739B2 (en) | 2002-10-10 | 2010-06-15 | Trend Micro Incorporated | Antiviral network system |
US7945957B2 (en) | 2002-10-10 | 2011-05-17 | Trend Micro Incorporated | Antiviral network system |
CN102136050A (zh) * | 2011-04-14 | 2011-07-27 | 北京思创银联科技股份有限公司 | 一种提高电脑理财安全性的系统及方法 |
CN106560833A (zh) * | 2016-07-22 | 2017-04-12 | 哈尔滨安天科技股份有限公司 | 一种基于文件头检测感染式病毒的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7581089B1 (en) | Method of protecting a computer stack | |
USRE44131E1 (en) | Storage device having function for coping with computer virus | |
US6240530B1 (en) | Virus extermination method, information processing apparatus and computer-readable recording medium with virus extermination program recorded thereon | |
US8346805B2 (en) | Filter driver for identifying disk files by analysis of content | |
US8479174B2 (en) | Method, computer program and computer for analyzing an executable computer file | |
US8239959B2 (en) | Method and data processing system to prevent manipulation of computer systems | |
KR100843701B1 (ko) | 콜 스택에 기록된 정보를 이용한 에이피아이 확인방법 | |
US7500245B2 (en) | Changing code execution path using kernel mode redirection | |
WO2012148080A2 (ko) | Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 | |
GB2417579A (en) | Method for dynamically inserting code into a process by enabling taken branch traps to intercept a branch during the execution of the process | |
EP1966736A2 (en) | Real time lockdown | |
TWI808261B (zh) | 使用轉換禁用指示符的設備、資料處理方法、電腦程式和電腦可讀取存儲媒體 | |
US8024730B2 (en) | Switching between protected mode environments utilizing virtual machine functionality | |
CN1068205A (zh) | 微机病毒防治的软件自保护方法 | |
US8707424B2 (en) | Method for making secure execution of a computer programme, in particular in a smart card | |
WO2018235858A1 (ja) | 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置 | |
JP2005258498A (ja) | サーバ回復方法 | |
JP6827244B1 (ja) | 監査装置、監査方法、監査プログラムおよび監査システム | |
US20060047727A1 (en) | Method of accessing a file for editing with an application having limited access permissions | |
CN113626805B (zh) | 基于risc-v与不可执行内存的缓冲区溢出攻击防御方法及系统 | |
JPH09231067A (ja) | コンピュータウィルスの侵入防止方法 | |
JPH05197629A (ja) | 記憶保護方式 | |
JP2005032182A (ja) | プログラム、攻撃コード抽出装置およびその方法 | |
JPH0844556A (ja) | 電子計算機におけるセキュリティ、システム保護を行うソフトウェアの構造及び仕組み | |
GB2324179A (en) | Preventing access to a hard disc in a computer on booting-up from a floppy disc |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication |