通过特征码查杀病毒.(小段c程序)

    杀毒软件最开始都是通过特征码来查杀病毒..一般的病毒都有一个特征码,通过特征码来判断属于哪一种病毒.例如,你已经获得了一个病毒样本 ,知道了病毒的一些信息,

例如,文件偏移地址0x0c15,  提取特征码长度:0x10(16)
特征码内容:0A 73 53 41 2E 65 78 30 5C 5C 31 39 32 2E 31 36

我们现在就可以用程序来实现代码的比较了,可以简单的一段小程序来判断.:
#include
bool scanvir(const char *FileName,long offset, int length, void *virus);
main()
{
bool k=false;
unsigned char vir[]=
{ 0x0A,0x73,0x53,0x41,0x2E,0x65,0x78,0x30,0x5C,0x5C,0x31,0x39,0x32,0x2E,0x31,0x36 };

k=scanvir("c://virus.exe",0x0c15,0x10,vir);
if(k) printf("警告!发现病毒。/n");
if(!k) printf("没有发现病毒。/n");
}
bool scanvir(const char *FileName,long offset, int length, void *virus)
{
FILE *fp = NULL;
int a=0;
char rvir[255]={ 0 };

bool F=false;
fp=fopen(FileName,"rb"); //以2进制打开指定文件
if(NULL==fp)
{ return F; }
fseek(fp,offset,SEEK_SET); //把文件指针指向偏移地址
fread(rvir,length,1,fp); //读取length长度的代码
a=memcmp(virus,rvir,length); //与我们提取的代码比较,返回值放到a中
if(a==0)
{
F=true;
}

fclose(fp);
return F;
}
//------------------------------------------------

   病毒技术和反病毒技术是不断反展和成熟的,传统的特征码已经不足以应付越来越狡猾的病毒了.现在的病毒采用变形或多态性技术,能够改变自己的特征,躲过大多数反病毒程序采用的基于特征的病毒扫描技术,"僵尸网络"的事件,有数百台计算机受到黑客的控制,由于具有地理上的分布性,因此很难平息一次分布式拒绝服务攻击,给反病毒厂商一个严峻的考验,这种分布式的拒绝攻击,已经不是单独的杀毒厂商所能胜任的了.还是得注意安全防护.

你可能感兴趣的:(通过特征码查杀病毒.(小段c程序))