传统的病毒检测技术依靠数据库中的病毒签名来工作,通过扫描文件内容,与病毒签名进行比对。为了降低误报率并提高扫描速度,签名的长度不能太长,也不能太短。这种方法只能用于检测已知病毒。
 
启发式,或启发式扫描定义了一种新的病毒检测技术,通过分析程序的结构和它的行为来发现病毒,不依赖病毒签名。通过这种新技术,病毒扫描程序可以检测出大约70%到80%的未知病毒。但是启发式扫描的误报率可能较高,如果不能很好地解决这一问题,用户不会喜欢这一检测手段。
 
检测过程通常分为两个阶段, 第一阶段是发现程序的行为,主要检测程序前段和后段部分,大约几K的代码。发现方法分静态扫描和动态扫描两种,区别主要在于是否利用CPU模拟器来检测程序的行为。
 
静态启发式扫描检测方法:字节序列(签名)比对法:通过匹配字节序列来发现程序中的某些行为。静态检测方法开销小,但是可能会漏掉一些经过精心设计的病毒。
 
动态启动式扫描检测方法:在隔离的仿真环境里运行可疑文件,扫描程序监视可疑文件的系统调用。动态检测方法开销大,效率低。对于只有在特定条件下才感染新文件的病毒,可能无法检测出(如果在检测时没有满足病毒的活动条件),这种情况下,静态检测方法更有效。
 
Bloodhound综合使用上述两种方法进行可疑行为检测。
 
第二阶段是分析发现的可疑行为,这一部分必须精心设计,因为通常的情况下,在前一阶段并不能发现病毒的所有可疑行为,所以必须根据发现的部分可疑行为做出判断,且必须保证较低的漏报和误报率。Bloodhound和Bloodhound-Macro都是不错的专家系统,前者可以检测出80%的未知病毒,后者可以检测出90%的未知宏病毒。