查找特征码(简单的病毒扫描)
例如,文件偏移地址0x0c15, 提取特征码长度:0x10(16)
特征码内容:0A 73 53 41 2E 65 78 30 5C 5C 31 39 32 2E 31 36
我们现在就可以用程序来实现代码的比较了,可以简单的一段小程序来判断.:
#include <stdio.h>
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;
}
//------------------------------------------------
病毒技术和反病毒技术是不断反展和成熟的,传统的特征码已经不足以应付越来越狡猾的病毒了.现在的病毒采用变形或多态性技术,能够改变自己的特征,躲过大多数反病毒程序采用的基于特征的病毒扫描技术,"僵尸网络"的事件,有数百台计算机受到黑客的控制,由于具有地理上的分布性,因此很难平息一次分布式拒绝服务攻击,给反病毒厂商一个严峻的考验,这种分布式的拒绝攻击,已经不是单独的杀毒厂商所能胜任的了.还是得注意安全防护.
转自
http://blog.csdn.net/huabihan/archive/2005/09/14/480889.aspx
- 上一篇: 利用几种语言的按钮事件特征破解软件
- 下一篇: 病毒木马查杀实战第019篇:病毒特征码查杀之编程实现