2、递归引擎
现代的反病毒引擎必须从以格式识别模块为先导的分支引擎,演化为递归引擎。
图三、递归引擎 |
关于分支引擎,大家可以参考笔者在2002 xcon会刊中所给出的引擎示意图,在图三所表示的递归引擎中,不再有像过去那种分支引擎的分析器入口和出口的概念。一个递归引擎满足如下的条件:
- 分析器之间是并列的,并没有绝对的先导模块。
- 输出结果有优先性,发现病毒优先级最高,而需要进一步预处理级别最低。
- 原则上,分析器串行工作,结果优先的引擎前置。
- 引擎为单输入、多输出引擎
一个分支的引擎不仅可以避免Mcafee对自解压文件感染病毒检测bug的尴尬,而且可以容易的对抗ArchBomb.zip这样的恶意程序对杀毒软件的“DoS”攻击。
3、可移植引擎
很多优秀的反病毒引擎都是有很强的移植性的,这种移植性建立在obj结构在x86 win平台和unix平台的相似性基础上。但可嵌入引擎工作环境可能是x86架构,也可能是PPC这种非x86架构。那些x86汇编编写的模块是移植的障碍。因此我们需要纯C引擎。
4、高可控引擎
在不同环境下的病毒处理,不仅应该与病毒的感染性有关,而且要与病毒的"特性"相关。这就要求控制粒度可以到达病毒个体,同时病毒库需要提供更多的信息。而病毒库的标志信息产生了特性控制,见下表:
这是一个在传统病毒库上,加入病毒特性信息的例子。这里通过一个int建立8个标志位,用来维护类似收件人是否为构造,发件人是否为真这样的标志,当然位操作会降低程序的速度。这里只是一个简单的demo。
对传统控制层次的第二个必要的补充,是在内部调试控制开关和用户配置开关之间,建立一个中间层。这个中间层,以一组半公开的配置开关构成模版。以适应防火墙、GAP、独立反病毒产品这些不同的工作形态。
5、精确处理引擎
当然这样的引擎的最后要求,是希望引擎实现一个接近完美逆过程的处理。除了传统的感染型病毒、宏病毒操作脚本之外,实现一个更为细腻的系统操作脚本。
下图,我们的一个细粒度可嵌入引擎的模型:
客观来说:AV辩证法不是一成不变的,是发展的动态的规则。不仅需要我们的总结,也需要我们的补充和突破。
细粒度的的可嵌入引擎是我们对于现实的应对,是我们的理想以及我们对AV技术的理解。