杀毒软件的原理( 二 )


病毒文件中总会存在一些可供识别的字符串,很多时候,这些字符串是某个病毒所特有的,因此这种方式适用于所有病毒的特征码的提取 。采用这种方式甚至还能识别某一大类病毒,但是缺点是需要耗费比较多的扫描时间 。以我们之前讨论过的“熊猫烧香”病毒为例,经过我们之前的逆向分析可以知道,病毒最开始会使用“xboy”以及“whboy”这两个字符串来进行解密的操作 。比如我们尝试一下,在病毒程序的二进制代码中搜索“whboy”:

杀毒软件的原理

文章插图
 
相信一般的程序中不会出现“whboy”以及“xboy”这两段字符,因此就可以考虑将这两个字符串或者其中的一个字符串作为“熊猫烧香”病毒的特征码 。这样只要对目标程序中的可打印字符串进行检索,如果发现了“whboy”就可以认为目标程序是“熊猫烧香”病毒程序 。这样即便是病毒出现了变种,只要它依旧包含有“whboy”,我们就依然能够实现查杀的工作 。或者我们也可以考虑使用更长的字符串,比如上图中开始的那32个字节,即“武汉男生感染下载者**”,将其十六进制代码提取出来作为特征码 。将这段字符串作为“熊猫烧香”的特征码 。然后可以使用PEiD查看一下该段代码所在的区段:
杀毒软件的原理

文章插图
 
可见,文件偏移0x0c040位于CODE,即代码区段中,那么其实在进行匹配的时候,我们只要检索目标程序的这个区段就可以了 。或者为了方便起见,我们在检测目标程序时,只检测位于文件偏移0x0c040处的字符,如果能够匹配病毒特征码,就认为目标程序是病毒 。




推荐阅读