杀毒软件如何明辨“忠奸”杀毒软件对于病毒的判断都各自有自己的标准,但这绝对不是主观臆断,要不就会误杀不断,那么面对纷繁复杂的各种病毒,杀毒软件如何才能辨认出病毒来呢?指纹认人――最早、最简单的特征码查杀杀毒软件识别病毒的方法,业界公认的包括特征码查毒、启发式查毒、行为分析等等。其中特征码查毒最早应用,简单地说这种技术就是靠检测文件,核对文件的二进制代码中是否含有危险的特征,这个特征可以是一段特殊的代码或者字符串。例如在杀毒软件的定义中,把代码中含有“逆向此文件的是傻”的文件定义为病毒,那么如果检测中发现某个文件的代码为如图1所示的情况,那么这个文件就是病毒了。这种技术比较成熟,很少有正常文件含有这些特征码,所以误报率低,但漏报严重,如果病毒作者在编写时加入了其他无用干扰码,例如写成“逆向的反义词是正项此文就是一件如此的说是傻的故事”,那么该病毒就逃过查杀,开始作恶。从小看大――模仿老人经验的启发式相对人来判断是否是病毒的准确度来说,简单的字符匹配检测就很傻了。如果让一个好的反病毒工程师来分析一个文件,看到文件的组成或编码,他就会想到是要做什么,这就相当于有经验的警察通过看人的眼神或行为举止就可以判断是否有犯罪的倾向。而这种智能性的判断技术应用到反病毒技术中就是启发式杀毒了。采用启发式杀毒,首先对文件进行反编译,判断里面含的某些代码会有什么行为,我们可以简单地理解为“如果这样,然后它会怎样”,这样就能分析出文件的真正动机,判断其是否为病毒。即使病毒进行了加壳处理,启发式就相当于假设给了它一个环境,让它执行,看产生的后果(见图2)。例如某个文件含有会格式化磁盘的BIOS指令,而且也没有事先需经用户许可的程序,那这个文件就会被识别为高危文件,然后再核对某些关键代码,就可以判断出是否是病毒。这种技术在ESETNOD32和迈克菲中应用较多,大大提高了查杀率。当然由于软件分析不会那么智能,这种方式就会把包含某些危险行为的软件识别为病毒,误报率相对特征码要高,不过两种技术结合,并且采用更加细致的特征码――基因码(无论病毒如何伪装,一些很基础的指令必须会存在,这些基础指令就是基因码)检测,就可以在提高查杀率的基础上降低误报。启发式技术其实是人工智能技术(研究机器模拟人类思维的学科)的一个分支,反编译后得出代码执行后的行为,然后判断行为是否危险。而这个行为的判断标准是有限的,杀毒软件无法像人类那些综合分析,所以很多病毒会将自己的行为变得很隐蔽,反编译后也显示不出危险,而多级结合后就会有危险(而事先编写的杀毒软件是无法分析到无穷无尽的行为),所以启发式杀毒也会有漏洞。积极主动――进步中的主动防御从技术上来讲,主动防御和启发式都属于人工智能技术(机器模拟人类智能)的范畴,主动防御是摆脱了文件本身的东西,对各种电脑行为进行监控,就好比警察平时不管你做什么,有什么眼神,有什么心里,只是会监控所有人的动作,一旦有违规动作,就会阻止。这体现在杀毒软件上就是监控计算机的所有行为,包括注册表监控、进程注入、键盘记录等,一旦有这些违规行为杀毒软件就会拦截,然后询问用户是否对该行为放行。这种方式从理论上来说是最安全的,在微点、EQ等杀毒软件中应用较广,目前各大杀毒软件都或多或少地应用了这个技术。而这就需要电脑使用者有一点的知识,懂得判断,后来发展为记录一定的判断规则,让软件帮助用户识别。而这种方式还是要归为规则的指定,于是这又给病毒提供了摆脱既定规则的可能。杀毒软件识别病毒时,都是一种机器的判断,而这种技术永远是和病毒进行对抗而产生的,没有绝对的。而杀毒软件的技术也不只是单一的应用,除了以上几个主要技术,还会结合虚拟机、黑白名单等技术,综合各种技术进行判断。