一个合格的病毒特征码需要满足以下几个要求:
1、不能从数据区提取,因为数据区的内容很容易改变,一旦病毒换了一个面具,改变了数据内容,特征码基本就会失效。
2、在保持特征码的唯一性的前提下,应当尽量使得特征码短小精悍,从而减少检测过程中的时间与空间的复杂度,提高检测效率。
3、病毒程序的特征码相对一定不能匹配到普通程序,比如选取病毒入口点的二进制代码,就很高几率出现误报的情况。
4、特征码的长度应当控制在128个字节以内以加快扫描速度。
特征码选取的基本方法
1、计算校验和
这种方法的特点是简单快速,也是360的杀毒引擎引擎采用的方式。但是采用这种方法,一种特征码只能匹配一个病毒的一个版本,即便病毒的变动很小,也需要重新提取特征码,这造成的后果是会使得特征码库过于庞大,一般用于临时提取特征码(这也是360庞大而缓慢的原因)。所以这种计算校验和的方式不值得一论)
2、提取特征字符串
采用这种方式能识别某一类病毒,sbj引擎便是以这种技术为基础的(所以sws安全中心体积比较小)。以目前很流行的filekiler病毒为例,经过我们之前的逆向分析可以知道,病毒最开始会使用"viax"这个字符串来进行解密的操作。因此需要在病毒程序的二进制代码中搜索"viax",相信一般的程序中不会出现"viax"这段字符,因此就可以考虑将这两个字符串或者其中的一个字符串作为filekiller病毒的特征码。
3、提取程序产生的系统调用
这是一种非常新的病毒库引擎杀毒方案,目前只有sbj引擎用于辅助杀毒,sws安全中心在开发sbj引擎时发明了这种方案。这种办法类似于第二种,尽管速度,杀毒准确性在录入合理的情况下轻松碾压其它方式,但是如果不在提取识别码的时候人工审核的话误报率会很高(原因是程序如果进行了非常基本的系统调用那么所有进行这类调用的程序都将成为"病毒"),因此成本高昂,再加上sws安全中心本来就是开源软件,挣不到钱,还不接受捐赠(原来做了个企业版卖钱现在也开了),所以无法维护,还是只能作为辅助使用。
温馨提示:内容为网友见解,仅供参考