当前位置主页 > 编程开发 >

杀软之芯 浅谈杀毒引擎二十年功能变迁

        2018-06-16 来源:网络整理

  第1页:杀毒引擎 杀毒软件的关键

  杀毒是一件让人十分头疼却又有快感的事情,为什么这么说?记得之前初接触计算机,选择杀软总是以能否在自己电脑上杀出病毒来。如果能杀出一两个木马、病毒,就认为这个杀软不错,杀的有快感。如果杀不到病毒,则心里惴惴不安,觉得这个杀软不行。

杀软之芯 浅谈杀毒引擎二十年功能变迁

  当然,自己之前这种想法是很幼稚的。那么,有的人可能就会有这样的疑问,杀毒软件为什么能杀毒、杀毒软件的好坏如何评判,这就得看杀毒软件的核心“杀毒引擎”。那么究竟什么是杀毒引擎呢?它有什么用?又是怎么工作的呢?今天我们就一起来解剖这一杀毒软件的心脏杀毒引擎技术。

  虽然自从上个世纪90年代杀毒软件进入大众计算机之后,迄今为止已经有20年左右的历史。但是,杀毒软件的核心技术并为发生太大的变化,那就是“杀毒引擎+特征码”。直到近年来,云计算的概念提出来,有人让杀毒搭上“云”的便车,不管是真正的“云”杀毒引擎技术也好,还是玩概念,但算是让杀毒引擎有了新的面貌。

  杀毒引擎是决定一款杀毒软件技术是否成熟可靠的关键,什么是杀毒引擎呢?简言之,它就是一套判断特定程序行为是否为病毒程序或可疑程序的技术机制,杀毒软擎不仅需要具备判断病毒的能力,还必须拥有足够的病毒清理技术和环境恢复技术。

  为了达到查杀病毒的目的,杀毒引擎自身要实施的行为就要比病毒还病毒,例如,为了及时获得环境变动的监控数据,一些杀毒引擎采用DLL的钩子技术将自身注入系统进程中,这一行为和DLL木马无异;而为了成功拦截查杀驱动级别木马Rootkit,杀毒引擎更需要将自身的一部分作为驱动形式运行,以便进入系统内核领域。

  说到这里,一些计算机配置较低的用户应该能明白,为什么自己安装杀毒软件后计算机速度明显变慢了,这多半是因为杀毒软件的“文件监控”等功能导致的,因为这一功能的实现原理就如文件型病毒的寄生过程一样,只不过文件型病毒是守候在内存中伺机感染每一个打开的文件,而“文件监控”功能是时刻驻守在内存里检查每一个打开的文件是否存在病毒,两者导致的后果都是程序载入内存的时间增加,在低配置的计算机表现得比较明显罢了。

  第2页:传统杀毒引擎工作流程

  杀毒引擎的工作流程

  1.程序行为捕获

  每个程序运行时都需要进行各种交互动作,如收发网络数据、响应某个触发事件、文件读写操作等,这些交互都被称为“行为”(Action),这个周期过程是可以被跟踪记录的,这就是杀毒引擎必须干涉的第一步。

  当杀毒软件的环境监视模块启动后,它会嵌入系统的操作接口,使得任何非核心程序和除了杀毒软件自身程序的运作过程都要被它实时监视,这一技术通常通过钩子技术和驱动层挂载实现,每个杀毒软件厂商都预先定义了一套病毒行为判断规范,即在一个给定的范围和置信度下,判断相关操作是否为合法。

  例如一个代码执行后被发现试图将自己写入用户请求执行的程序文件体内、或进行特定的复制动作和添加注册表操作,则可将其怀疑为病毒,移交给查毒过程的第二步进一步判断处理。

  2.基于引擎机制的规则判断

  这一步环节可以称之为病毒判断的核心阶段,一个好的杀毒引擎能在这个阶段识别出相当规模的病毒,其原理是在引擎中内置一部分病毒的特征代码,称为“基于特征码的静态扫描技术”,即杀毒引擎直接在文件中查找自身携带的特征代码,力求尽量在这一步发现病毒。

  有经验的计算机用户应该记得,当初的杀毒产品并没有非常大的病毒特征数据库,甚至早期杀毒软件的所谓病毒特征数据库还是ASCII格式的,并由用户自己手工加入,仅仅作为一种简单的扩充手段来运作而已,这是因为早期某些杀毒软件主程序内就已经包含了当时各种流行病毒的特征码。

  但是,如今由于网络普及和计算机技术发展,病毒攻势铺天盖地而来,如果单纯靠杀毒引擎自身携带病毒特征代码,将会造成主程序体积过于庞大而无法高效率运行,,且升级麻烦等难点,因而杀毒引擎不得不将病毒特征库从自身脱离开来,形成独立的病毒数据库结构来与自身保持联系,这就是“基于特征码的静态扫描技术”的扩展产物“病毒特征代码数据库(也就是我们通常所说的病毒库)”。

  3.引擎与病毒特征库的交互

  如今的杀毒软件,已经不得不采用外部数据库连接的方法来达到识别病毒的效果。病毒特征代码数据库中,以特定格式储存了各种病毒的行为标识和静态代码。在工作时,杀毒引擎需要将捕获到的程序行为,转换为它自身可以识别的行为标识和静态代码,然后进入病毒特征代码数据库中查询并等待其返回查询结果。

  因此,这个步骤是整个杀毒过程中最慢的,但是不可否认,当前的杀毒软件对大量病毒的识别都是在这个阶段完成的。所以,一个足够庞大的病毒库往往能够弥补杀毒引擎的不足之处,但是当今病毒越发复杂和繁多,如此长期以往,病毒特征库将会有一天过于臃肿而导致不良后果。

  要解决这个问题,只能在核心技术上尽量实现将病毒检测工作在第二步完成。只可惜在当前我们仍然没有能够实现这个想法的杀毒引擎技术,如今的杀毒软件或多或少都依赖着一个几十MB的病毒特征库来维持工作。

  杀毒厂商在杀毒引擎核心未进行关键修改时,发布的病毒更新,其实也就是为了往这个特征数据库中添加最新发现的病毒数据,以达到查杀新病毒的作用。

  4.病毒查杀和系统环境恢复

  当杀毒引擎检测到病毒时,分两种情况对待。一种是尚未来得及进行感染或进行破坏行为的病毒,在这种情况下杀毒引擎只需要简单删除文件就可以了。但是日常操作中,用户面临最多的,还是已经被病毒实施感染破坏行为后的系统环境。在这种情况下,杀毒引擎必须在使用适当的方式查杀病毒后,根据病毒特征库中记录的病毒行为,来智能判断当前系统环境遭受破坏的情况并进行恢复。

  例如,对于受病毒感染的文件,杀毒引擎必须根据一定的算法在文件体内找出病毒代码寄生的部分并给予清除,这个过程必须非常谨慎,否则直接的后果就是导致原文件被破坏,这样的杀毒就毫无意义了。

  而对于非文件型的木马和恶意程序,由于它们会通过各种方式篡改系统注册表甚至系统文件,来达到加载自身之目的。杀毒引擎在清除了这些病毒后能否准确有效的恢复受破坏的系统环境,就是对杀毒引擎的最大挑战。

推荐图文