由于以上提到的原因,杀毒软件是会不可避免的对用户计算机运行速度造成一定影响的,但是为了安全,大部分用户只能牺牲一点工作效率来换取安全了,那么,杀毒引擎的具体实现过程又是如何呢?且让我们来对其窥探一番。
1.守住每一个关卡——程序行为捕获
每个程序运行时都需要进行各种交互动作,如收发网络数据、响应某个触发事件、文件读写操作等,这些交互都被称为“行为”(Action),这个周期过程是可以被跟踪记录的,这就是杀毒引擎必须干涉的第一步,当杀毒软件的环境监视模块启动后,它会嵌入系统的操作接口,使得任何非核心程序和除了杀毒软件自身程序的运作过程都要被它实时监视,这一技术通常通过钩子技术和驱动层挂载实现,每个杀毒软件厂商都预先定义了一套病毒行为判断规范,即在一个给定的范围和置信度下,判断相关操作是否为合法。例如一个代码执行后被发现试图将自己写入用户请求执行的程序文件体内、或进行特定的复制动作和添加注册表操作,则可将其怀疑为病毒,移交给查毒过程的第二步进一步判断处理。
为了实现行为捕获操作,杀毒软件引擎必须将自身模块嵌入系统底层,在这个实现方法上,各大厂商都有自己的一套方案,一般厂商普遍采用的是中间件技术,即通过Hook挂钩方式实现对每个进程的访问,这种方案通过在系统底层与应用程序之间嵌入一个全局钩子DLL模块达到目的,从严格上来说,它的相对安全和稳定性较低,但是在源代码不开放的操作系统层面上,这是最简单的方法。
一部分厂商因为与操作系统厂商存在合作关系,因而获得了较其他厂商杀毒产品要高的操作系统特权,所以他们采用的方案是基于系统最底层的系统核心驱动,这种实现方式是最安全的,或者说最高级的实现方式,至今只有Norton获得了这个特权。随着病毒技术逐渐渗透到Rootkit层次,过去的Hook技术逐渐有点力不从心,于是杀毒厂商开始转入驱动方案,当然,由于没有操作系统厂商的授权,他们并无法实现最底层的核心驱动解决方案,于是杀毒厂商编写了一个称为“软件驱动”的中间件,用于在系统中产生一个虚拟硬件。 众所周知,在操作系统中,只有驱动模块能通过一个“硬件抽象层(HAL)”的通讯接口而到达系统底层,如今流行的Rootkit木马也是采用驱动形式进入系统核心的,因此杀毒厂商使用“软件驱动”来实现底层监视的方案是要比一般的Hook技术效果显著的,但是这也不可避免会出现一些问题,如果这个“软件驱动”存在缺陷或者被某些程序异常终止(例如出现未预料的错误),在系统底层无任何保护措施的环境下,最直接的一个后果就是系统蓝屏崩溃,造成可能的损失。
本文来源:IT168 作者:佚名