杀毒软件的工作原理是什么

如题所述

杀毒软件的工作原理
一、杀毒软件原理基础
一个杀毒软件的构造的复杂程度要远远高于木马或病毒,所以其原理也比较复杂。而且鉴于现在木马病毒越来越向系统底层发展,杀毒软件的编译技术也在不断向系统底层靠近。例如现在的“主动防御”技术,就是应用RING0层的编译技巧。这里我简单为大家介绍一下基本构成。
一个杀毒软件一般由扫描器、病毒库与虚拟机组成,并由主程序将他们结为一体,如图1。

扫描器是杀毒软件的核心,用于发现病毒,一个杀毒软件的杀毒效果好坏就直接取决于它的扫描器编译技术与算法是否先进,而且杀毒软件不同的功能往往对应着不同的扫描器,也就是说,大多数杀毒软件都是由多个扫描器组成的。而病毒库存储的特征码形式则取决于扫描器采用哪种扫描技术。它里面存储着很多病毒所具有的独一无二的特征字符,我们称之为“特征码”。特征码总的分来只有两个,文件特征码与内存特征码。文件特征码存在于一些未执行的文件里,例如EXE文件、RMVB文件、jpg文件甚至是txt文件中都有可能存在文件特征码,也都有可能被查杀。而内存特征码仅仅存在于内存中已运行的应用程序。而虚拟机则是最近引进的概念,它可以使病毒在一个由杀毒软件构建的虚拟环境中执行,与现实的CPU、硬盘等完全隔离,从而可以更加深入的检测文件的安全性。
简单的说,杀毒软件的原理就是匹配特征码。当扫描得到一个文件时,杀毒软件会检测这个文件里是否包含病毒库里所包含的特征码,如果有,则报毒病查杀,如果没有,纵然这个文件确实是一个病毒,它也会把它当作正常文件来看待。

二、基于文件扫描的杀毒技术
基于文件的杀毒技术可以分为“第一代扫描技术”、“第二代扫描技术”与“算法扫描”这三种方法,对于免杀爱好者来说,要对每一种方法烂熟于心,才能成为高手!但做为一个初学者来说了解一下即可。这里我们就简单介绍一下其中两种种方法,详细的技术原理如果各位得这有兴趣的话可以自己研究。
1、通配符扫描技术
  通配符扫描技术属于是第一代扫描技术的一个分支,对于“通配符”,可以理解为具有一定意义的符号,例如DOS命令里的*号就是任意长度的任意字符的意思,而且通配符在不同的领域也里可以代表不同的意思。
现在杀毒软件中简单的扫描器常常支持通配符,因为鉴于字符串扫描技术的执行速度与特征码长度限制等问题,使得其逐渐退出历史舞台,取而代之的是通配符扫描技术,通配符扫描技术以同样简单的原理与技术却实现了更为强大的功能。
扫描器中的通配符一般用于跳过某些字节或字节范围,以至于现在有些扫描器还支持正则表达式!
下面我们通过一个例子来讲解通配符扫描技术的原理。
例如我们的病毒库中有这样一段特征码:
0400 B801 020E 07BB ??02 %3 33C9 8BD1 419C
上面的特征码可以解释为:
1、尝试匹配04,如果找到则继续,否则跳出。
2、尝试上一匹配目标后匹配00,如果找到则继续,否则跳出。
3、尝试上一匹配目标后匹配B8,如果找到则继续,否则跳出。
4、尝试上一匹配目标后匹配01,如果找到则继续,否则跳出。
5、尝试上一匹配目标后匹配02,如果找到则继续,否则跳出。
6、尝试上一匹配目标后匹配0E,如果找到则继续,否则跳出。
7、尝试上一匹配目标后匹配07,如果找到则继续,否则跳出。
8、尝试上一匹配目标后匹配BB,如果找到则继续,否则跳出。
9、忽略此字节。
10、尝试上一匹配目标后匹配02,如果找到则继续,否则跳出。
11、在接下来的3个位置(字节)中尝试匹配33,如果找到则继续,否则跳出。
12、尝试上一匹配目标后匹配C9,如果找到则继续,否则跳出。
13、尝试上一匹配目标后匹配8B,如果找到则继续,否则跳出。
14、尝试上一匹配目标后匹配D1,如果找到则继续,否则跳出。
15、尝试上一匹配目标后匹配41,如果找到则继续,否则跳出。
16、尝试上一匹配目标后匹配9C,如果找到则继续,否则跳出。
这种扫描技术通常支持半字节匹配,这样可以更精确地匹配特征码,一些早期的加密病毒用这种方法都比较容易检测出来。
其实现在的一些特征码仍然在使用类似此种方法的特征码表达技术,因此掌握这些知识会对我们以后的免杀有所帮助,同样可以使我们在定位特征码时更加了解自己正在做什么,以及做的是否正确等等,这对于我们来说非常重要。
2、智能扫描
智能扫描属于第二代扫描技术的一个分支,这种方法是在一种病毒变异工具包出现之后提出的。智能扫描法会忽略检测文件中象NOP这样的无意义指令。而对于文本格式的脚本病毒或宏病毒,则可以替换掉多余的例如空格、换行符或制表符等空白字符,这一切替换动作在扫描缓冲区就会执行,从而大大提高了扫描器的检测能力。
3、近似精确识别法
近似精确识别法同样是属于第二代扫描技术的一个分支,但是相比起来应用的更为广泛,这种扫描技术包含了两种方式与若干种方法,在这里不可能一一介绍,下面将主要介绍两种方法的代表。
方法一:多套特征码
该方法采用两个或更多个字符串集来检测每个病毒,如果扫描器检测到其中一个特征符合,那么就会警告发现变种,但并不会执行下一步操作(例如清除病毒体或删除文件)。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作。
方法二:效验和
对于校验和,也许有些朋友会想到文件校验和比对的方法,这个方法的思路是将每一个无毒的文件生成一个校验和,等待下次扫描时在进行简单的校验和比对即可,如果校验和有所变化,在进行进一步的扫描,这样有利于提升扫描器的效率,但是严格地说,这并不算是扫描技术。
效验和扫描技术利用的最为到位的就是比较出名的KAV(卡巴斯基)了,它的第二代扫描器就采用了密码效验和技术,并且没有使用任何搜索字符串技术。关于效验和是一个复杂的概念,简单的说就是通过对病毒中的某一段代码的计算,从而得出一个值(例如123XY4),与MD5加密有些相似,当然这样说不完全正确。
但KAV采用的是一种由卡巴斯基发明的一种叫做密码效验和的特殊算法,这种算法通常会产生两个值。而且病毒库的查询采用了特征码分类思想,例如扫描EXE文件时只调用与EXE文件有关的病毒库,而根据EXE文件的位置不同(例如文件头、入口点)又分为不同的子库,这样有利于提高扫描速度。

三、由此得出的一些经验
首先我们应该明白第一个例子介绍的通配符“0400 B801 020E 07BB ??02 %3 33C9 8BD1 419C”代表的肯定不是一个字节。也就是说,杀毒软件厂商定位的特征一般都是数十字节,所以我们定位特征码时就要避免定位过于精确,一般保证在10字节以内就足够了!因为如果特征码定位的过于精确,会为我们以后的修改操作带来很大不必要的麻烦。我们可以简单的想一下,是修改一个字节的方法多,还是修改10字节的方法多?
而由智能扫描我们也可以得出一个结论,就是不要将杀毒软件想的太傻,例如属于智能扫描的一个分支——启发式扫描,它会将一些异常改动计算到可能性的“权值”里,如果一个文件的可疑改动过多,就会导致报毒,这样我们所做的一些工作就起到了相反的作用,是典型的画蛇添足。所以,修改木马文件时也要掌握一个度的问题,不要修改的过多,但还要保证自己的木马免杀时间够长,这就要明白那些更改会被归为可疑修改,而那些则不会。但是掌握这些是需要一定的PE文件结构基础知识的,对于PE文件,我会在下篇文章详细介绍。
而最后的就是卡巴斯基的密码校验和扫描技术了,恐怕这在业内也是第一次提出来,各位看官有福了!
对于密码校验和的更深层次的知识,这里我们不再细谈,我们只谈他对免杀带来什么样的影响。首先,特殊的扫描方法必然会导致特殊的特征码,所以密码校验和的真正特征码通常体积都比较大,通过脚本木马的一些实验,卡巴斯基7.0对字母的大小写不是很敏感,此外对文件代码的变动也不是很敏感。也就是说,只要包含特征码的这行代码在卡巴斯基的校验和取样范围之内,那么它就会报毒,而如果你将其移出这个范围,那么肯定会导致文件不能正常运行,唯一的办法就是更改代码结构。
如果大家注意总结与思考,会发现一些免杀方面的模糊概念完全可以用本文介绍的知识解释通,例如什么“隐含特征码”等等。

杀毒软件是根据什么来进行病毒判断并查杀得呢?

病毒检测的方法

在与病毒的对抗中,及早发现病毒很重要。早发现,早处置,可以减少损失。检测病毒方法有:特征代码法、校验和法、行为监测法、软件模拟法

这些方法依据的原理不同,实现时所需开销不同,检测范围不同,各有所长。

特征代码法

特征代码法被早期应用于SCAN、CPAV等著名病毒检测工具中。国外专家认为特征代码法是检测已知病毒的最简单、开销最小的方法。

特征代码法的实现步骤如下:

采集已知病毒样本,病毒如果既感染COM文件,又感染EXE文件,对这种病毒要同时采集COM型病毒样本和EXE型病毒样本。

在病毒样本中,抽取特征代码。依据如下原则:

抽取的代码比较特殊,不大可能与普通正常程序代码吻合。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间的开销。如果一种病毒的特征代码增长一字节,要检测3000种病毒,增加的空间就是3000字节。在保持唯一性的前提下,尽量使特征代码长度短些,以减少空间与时间开销。

在既感染COM文件又感染EXE文件的病毒样本中,要抽取两种样本共有的代码。将特征代码纳入病毒数据库。

打开被检测文件,在文件中搜索,检查文件中是否含有病毒数据库中的病毒特征代码。如果发现病毒特征代码,由于特征代码与病毒一一对应,便可以断定,被查文件中患有何种病毒。

采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新版本,否则检测工具便会老化,逐渐失去实用价值。病毒特征代码法对从未见过的新病毒,自然无法知道其特征代码,因而无法去检测这些新病毒。

特征代码法的优点是:检测准确快速、可识别病毒的名称、误报警率低、依据检测结果,可做解毒处理。其缺点是:不能检测未知病毒、搜集已知病毒的特征代码,费用开销大、在网络上效率低(在网络服务器上,因长时间检索会使整个网络性能变坏)。

其特点:

A.速度慢。随着病毒种类的增多,检索时间变长。如果检索5000种病毒,必须对5000个病毒特征代码逐一检查。如果病毒种数再增加,检病毒的时间开销就变得十分可观。此类工具检测的高速性,将变得日益困难。

B.误报警率低。

非C.不能检查多形性病毒。特征代码法是不可能检测多态性病毒的。国外专家认为多态性病毒是病毒特征代码法的索命者。

D.不能对付隐蔽性病毒。隐蔽性病毒如果先进驻内存,后运行病毒检测工具,隐蔽性病毒能先于检测工具,将被查文件中的病毒代码剥去,检测工具的确是在检查一个虚假的“好文件”,而不能报警,被隐蔽性病毒所蒙骗。

校验和法

将正常文件的内容,计算其校验和,将该校验和写入文件中或写入别的文件中保存。在文件使用过程中,定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否感染,这种方法叫校验和法,它既可发现已知病毒又可发现未知病毒。在SCAN和CPAV工具的后期版本中除了病毒特征代码法之外,还纳入校验和法,以提高其检测能力。

这种方法既能发现已知病毒,也能发现未知病毒,但是,它不能识别病毒类,不能报出病毒名称。由于病毒感染并非文件内容改变的唯一的非他性原因,文件内容的改变有可能是正常程序引起的,所以校验和法常常误报警。而且此种方法也会影响文件的运行速度。

病毒感染的确会引起文件内容变化,但是校验和法对文件内容的变化太敏感,又不能区分正常程序引起的变动,而频繁报警。用监视文件的校验和来检测病毒,不是最好的方法。

这种方法遇到下述情况:已有软件版更新、变更口令、修改运行参数、校验和法都会误报警。

校验和法对隐蔽性病毒无效。隐蔽性病毒进驻内存后,会自动剥去染毒程序中的病毒代码,使校验和法受骗,对一个有毒文件算出正常校验和。

运用校验和法查病毒采用三种方式:

①在检测病毒工具中纳入校验和法,对被查的对象文件计算其正常状态的校验和,将校验和值写入被查文件中或检测工具中,而后进行比较。

②在应用程序中,放入校验和法自我检查功能,将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原校验和值。实现应用程序的自检测。

③将校验和检查程序常驻内存,每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预先保存的校验和。

校验和法的优点是:方法简单能发现未知病毒、被查文件的细微变化也能发现。其缺点是:发布通行记录正常态的校验和、会误报警、不能识别病毒名称、不能对付隐蔽型病毒。

行为监测法

利用病毒的特有行为特征性来监测病毒的方法,称为行为监测法。通过对病毒多年的观察、研究,有一些行为是病毒的共同行为,而且比较特殊。在正常程序中,这些行为比较罕见。当程序运行时,监视其行为,如果发现了病毒行为,立即报警。

这些做为监测病毒的行为特征如下:

A.占有INT 13H

所有的引导型病毒,都攻击Boot扇区或主引导扇区。系统启动时,当Boot扇区或主引导扇区获得执行权时,系统刚刚开工。一般引导型病毒都会占用INT 13H功能,因为其他系统功能未设置好,无法利用。引导型病毒占据INT 13H功能,在其中放置病毒所需的代码。

B.改DOS系统为数据区的内存总量

病毒常驻内存后,为了防止DOS系统将其覆盖,必须修改系统内存总量。

C.对COM、EXE文件做写入动作

病毒要感染,必须写COM、EXE文件。

D.病毒程序与宿主程序的切换

染毒程序运行中,先运行病毒,而后执行宿主程序。在两者切换时,有许多特征行为。

行为监测法的长处:可发现未知病毒、可相当准确地预报未知的多数病毒。行为监测法的短处:可能误报警、不能识别病毒名称、实现时有一定难度。

软件模拟法

多态性病毒每次感染都变化其病毒密码,对付这种病毒,特征代码法失效。因为多态性病毒代码实施密码化,而且每次所用密钥不同,把染毒的病毒代码相互比较,也无法找出相同的可能做为特征的稳定代码。虽然行为检测法可以检测多态性病毒,但是在检测出病毒后,因为不知病毒的种类,难于做消毒处理。

计算机病毒的防治策略

计算机病毒的防治要从防毒、查毒、解毒三方面来进行;系统对于计算机病毒的实际防治能力和效果也要从防毒能力、查毒能力和解毒能力三方面来评判。

“防毒”是指根据系统特性,采取相应的系统安全措施预防病毒侵入计算机。“查毒”是指对于确定的环境,能够准确地报出病毒名称,该环境包括,内存、文件、引导区(含主导区)、网络等。“解毒”是指根据不同类型病毒对感染对象的修改,并按照病毒的感染特性所进行的恢复。该恢复过程不能破坏未被病毒修改的内容。感染对象包括:内存、引导区(含主引导区)、可执行文件、文档文件、网络等。

防毒能力是指预防病毒侵入计算机系统的能力。通过采取防毒措施,应可以准确地、实时地监测预警经由光盘、软盘、硬盘不同目录之间、局域网、因特网(包括FTP方式、E-MAIL、HTTP方式)或其它形式的文件下载等多种方式进行的传输;能够在病毒侵入系统是发出警报,记录携带病毒的文件,即时清除其中的病毒;对网络而言,能够向网络管理员发送关于病毒入侵的信息,记录病毒入侵的工作站,必要时还要能够注销工作站,隔离病毒源。

查毒能力是指发现和追踪病毒来源的能力。通过查毒应该能准确地发现计算机系统是否感染有病毒,并准确查找出病毒的来源,并能给出统计报告;查解病毒的能力应由查毒率和误报率来评判。

解毒能力是指从感染对象中清除病毒,恢复被病毒感染前的原始信息的能力;解毒能力应用解毒率来评判。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-20
楼主你好,可以安装使用腾讯电脑管家用户点亮电脑管家图标,便可获得众多游戏特权:使用电脑管家的时间满连续3个活跃天, QQ客户端的电脑管家图标将会自动点亮;或者用户可以在满足该条件后的第2天手动将图标点亮。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网