郁悶~~~
發現了一個很讓我郁悶的問題 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;
}
}
/**********************************動作選擇********************************************/
程序介紹:【莪們都很看重①個哋方,但彼此看重的哋方卻不是在同①個哋址...】
(同如今的殺毒軟件比較。我們都看重文件是否為病毒文件,但我們所看重的特征碼位置不在同一個地址)
|