找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3702|回复: 0
收起左侧

C语言作品→杀毒程序(原始版)

[复制链接]
ID:71922 发表于 2015-1-11 01:03 | 显示全部楼层 |阅读模式
郁闷~~~
发现了一个很让我郁闷的问题  C语言中的输入函数连续使用 就会失效,不能中断程序等待输入 很郁闷 ···
例如:scanf();
下面是一个代码片段:
#incude <stdlib.h>
#include <stdio.h>
int mian()
{
char a,b,c;
printf("请输入第一个字母:");
scanf("%c",&a);
printf("请输入第二个字母:");
scanf("%c",&b);
printf("请输入第三个字母:");
scanf("%c",&c);
printf("第一个字母【%c】第二个字母【%c】第三个字母【%c】",a,b,c);
system("pause");
}
编译运行试一下...你就会发现很郁闷的现象···




灵感突至,设计了一个杀毒程序,查杀原理很简单,用二进制的方式读取文件中的16进制代码 然后与预定义的病毒特征码(16进制代码)进行比较...偏移地址确定特征码所在的位置 ..遍历磁盘(目录)中的所有文件进行逐一比较.....
代码片段
/**********************************病毒特征码********************************************/
unsigned char shangxing2010[]=//上兴远程控制2010特征码
{0x00,0xE8,0x96,0x06,0x00,0x00,0xFF,0xE0,0xC3,0x8D,0x40,0x00,0x57,0x53,0x41,0x43,0x6C,0x65,0x61,0x6E,0x75,0x70,0x00,0x00,0x61,0x63,0x63,0x65,0x70,0x74,0x00,0x00,0x62,0x69,0x6E,0x64,0x00,0x00,0x00,0x00,0x63,0x6C,0x6F,0x73,0x65,0x73,0x6F,0x63};
unsigned char td[]=//TD特征码
{0xEF,0x75,0x09,0x8B,0x1E,0x83,0xEE,0xFC,0x11,0xDB,0x73,0xE4,0x31,0xC9,0x83,0xE8,0x03,0x72,0x0D,0xC1,0xE0,0x08,0x8A,0x06,0x46,0x83,0xF0,0xFF,0x74,0x74,0x89,0xC5};
/*------------------------------------------------------------------------------------------*/
/*小雪学校机房的病毒样本,Recycle.exe 类似文件夹伪装病毒(病毒原体及释放文件的图标为文件夹)*/
/*------------------------------------------------------------------------------------------*/
unsigned char Recycle[]=//小雪学校机房发现的病毒样本 待研究
{0xE9,0xA4,0x93,0x03,0xD7,0x9D,0x41,0x03,0xE4,0x94,0x21,0x9E,0x76,0x30,0x21,0x9E,0xEC,0x77,0x61,0x9E,0x78,0x30,0x21,0x9E,0x76,0x30,0x21,0x9E,0x76,0x30,0x21,0x9E};
/**********************************病毒特征码********************************************/
/**********************************病毒偏移量********************************************/
int pian()
{
/*-------------------上兴远程控制2010---------------------------*/   
   dell=1;
count=viewfiles(directory,0x63910,0x20,shangxing2010);
i+=count;
if(count==0)dell=0;
/*-------------------TD远程控制2010---------------------------*/   
dell=2;
count=viewfiles(directory,0x59f0,0x20,td);
i+=count;
if(count==0)dell=0;
/*-------------------Recycle.exe---------------------------*/  
dell=3;
count=viewfiles(directory,0x95c0,0x20,Recycle);
i+=count;
if(count==0)dell=0;
}
/**********************************病毒偏移量********************************************/
检查出为病毒文件后 就定义查杀动作函数 每一种的病毒处理动作都不一样 dell 变量就是判断为何种病毒 这样就能选择对应的处理函数
/**********************************动作选择********************************************/
int diao(const char *filename)
{
switch(dell)
{
  case 1: shangxing_(filename); break;
  case 2: td__(filename);  break;
     case 3: Recycle_(filename); break;

}
}
/**********************************动作选择********************************************/
程序介绍:【莪們都很看重①个哋方,但彼此看重的哋方却不是在同①個哋址...】
(同如今的杀毒软件比较。我们都看重文件是否为病毒文件,但我们所看重的特征码位置不在同一个地址)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表