特征码技术的静态杀毒引擎(20050822AA39)

本文介绍了特征码技术在静态杀毒引擎中的应用,包括如何选取病毒程序的特征码,关键数据结构VSIGNATURE和VRECORD的定义,以及引擎、库与被扫描对象之间的基本关系和分工。通过遍历文件系统并使用memcmp进行特征匹配来检测病毒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

time:2005-08-22

kaspersky club 21楼会议室


利用特征码技术的静态杀毒引擎
特征码的选取
在进入程序的详细讲解之前,先来讲一下对于病毒程序的特征码通常是如何选取出来的,以及特征码的结构是什么样子的。

通常选择特征码是按照以下思路。

1. 获取一个病毒程序的长度,根据长度可以将文件分为几份,份数根据样本长度而定,可以是3~5份,也可以更多。分成几段获取特征码的方法可以很大程度上避免采用单一特征码误报病毒现象的发生,也可以避免特征码过于集中造成的误报。

2. 每份中选取通常为16或32个字节长的特征串。

在选取时,应该采取如下的原则:

1. 如果选出来的信息是通用信息,即很多文件该位置都是一样的信息,那么舍弃,调整偏移量后重新选取。

2. 如果选取出来的信息是全零的字节。那么也要调整偏移后重新选取。

当然调整的偏移量多少可以人为事先规定,也可以自动随机调节。最后,将选取出来的几段特征码及它们的偏移量存入病毒库,标示出病毒的名称即可。为了方便选取特征码,通常根据以上的思路编写出特征码提取程序,自动提取特征码并作为病毒记录存入病毒库。

关键数据结构
下面我们来介绍一下整个引擎中关于特征码扫描部分的代码,整个引擎框架的结构由于篇幅有限,放在下期文章中进行介绍。

首先介绍程序中的两个重要结构VSIGNATURE和VRECORD。一个VSIGNATURE是一个特征,很多个特征组成了一条病毒记录,也就是一个VRECORD。


typedef struct tagVSIGNATURE

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值