Help Me Please For Antivirus Coding Problem In C

Discussion in 'C' started by dragosam, Nov 13, 2007.

  1. dragosam

    dragosam New Member

    Joined:
    Nov 13, 2007
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    please help i have developed an antivirus programme code in c language

    which fights for ashar virus whos details are


    Ashar virus is also known as paralyse virus

    Its charachteristic features are :

    1) It comes as “(c) Brain “ or ( c) ashar”

    Where ( c ) stands for copyright in the volume label

    of affected disk.

    2) it resides in the boot record and is entirely a memory

    Resident programme occupying 3 to4 kilobytes
    i am attching its source code

    please help me it shows many errors when i run it

    please help me as soon as possible i have to submit that programme code

    latest by 15 nov 2007

    please make it working by correcting it and you can post it to my email id

    dragokartik@yahoo.co.in
    CODE IS AS FOLLOWS


    Code:
    #include<dos.h>
    #include<dir.h>
    #include<string.h>
    void main()
    
    {
    
      int virus_found,more;
    
      virus_found=RAM_Test();
    
      if(virus_found)
      {
    
        Reset_INT13();
    
        clean_Disk('F')  ;
    
      }
    
      while(1)
      {
        printf("\n\nMore diskette to clean ?  Y/N");
    
        more=toupper(getch());
    
        while(more!='Y' &&more!='N')
    	 more=toupper(getch());
    
        if(more=='N') exit(0);
           clean_Disk(more);
    
       }
       }
    
       /* End of program */
    
       /* Routine to check Ram for virus */
    
       RAM_Test()
    {
       unsigned int vseg,voff;
    
       void interrupt(*v)(void);
    
       printf("\n\n RAM checking____");
    
       v=getvect(109);
       vseg=FP_SEG(v);
       voff=FP_OFF(v);
       if(vseg!=0x0 && voff=0x0)
       {
        printf("virus detected :-");
        putch(7);return(1);
        }
        else
        {
         printf("ok\n\n");
         putch(7);putch(7);return(0);
        }
    }
        /*end of routine ram test*/
    
       /*ROUTINE TO RESETINT 13H*/
     Reset_INT13()
    {
         unsigned int vseg,voff;
    
         void interrupt(*v)(void);
         v=getvect(109);
         vseg=FP_SEG(v);voff=FP_OFF(v);
         poke(0,76,voff);poke(0,78,vseg);
         printf("disabled\n");
    }
      /*end of routine Reset_INT13*/
    
      /*Routine to clean diskette*/
    
     clean_Disk(next)
     char next;
    {
     clean_Boot_sector(next);
     clean_Data_Area();
     change_Label();
    }
    /* end of routine clean disk*/
    
    clean_Boot_sector(next_disk)
    char next_disk;
    {
     int ans,i,True;
     static void *buf[512];
     char virus[6],ashar[]="ashar",brain[]="Brain";
     if(next_disk=='F')
     True=1;
     else True=0;
     while(True)
     {
       printf("\ninsert dos diskettein drive A____WAITING\n");
       ans=getch();
       ans=absread(0,1,0,buf);
       virus=ashar;
       ans=chkboot(buf,&virus);
       virus=brain;
       ans=ans&&chkboot(buf,&virus);
       if(!ans)
       {
        printf("\nBoot sector infected with virus\n") ;
       }
       else
       break;
     }
     printf("\n insert infected disk in drive A_________ waiting\n\n\n");
     ans=getch();
     ans=abswrite(0,1,0,buf);
     if(ans)
     printf("\n unable to clean disk\n");
    }
    
    /*end of routine clean boot record*/
    
    /*subroutine to check virus*/
     /*boot routine*/
     chkboot(str,name)
     char str[512],name[6];
     {
       int i,k;
       for(i=0,k=0;i<512;i++)
       if(str[i]==name[k])
       {
        k++;
        if(k==5)
        return(0);
        else
        continue;
       }
       else
       k=0;
       return(1);
      }
    
      /*end of sub routine chk boot*/
    
      /*routine to clean virus*/
      /* executive routine*/
    
      clean_Data_Area()
    {
       int i,j;
       float rj;
       unsigned int fat_off,fat_dmp;
       unsigned dmp_sav;
       unsigned char fatbuf[1024],b1,b2;
       absread(0,2,1,fatbuf);j=0;
    
       for(i=2;i<355;i++)
       {
         rj=1.5*i;
         fat_off=rj;
         b2=fatbuf[fat_off+1];
         b1=fatbuf[fat_off];
         fat_dmp=b2;
         fat_dmp=fat_dmp<<8;
         fat_dmp=fat_dmp+b1;
         dmp_sav=fat_dmp;
         if(rj==fat_off)
         fat_dmp=fat_dmp&0xffff;
         else fat_dmp=fat_dmp>>4;
         fat_dmp=fat_dmp<<4;
         fat_dmp=fat_dmp>>4;
         if(fat_dmp==0x0ff7)
         {
          j++;
          if(rj==fat_off)
          dmp_sav=dmp_sav&0xf000;
          else
          dmp_sav=dmp_sav&0x000f;
          b2=(dmp_sav&0xff00)>>8;
          b1=dmp_sav&0x00ff;
          fatbuf[fat_off]=b1;
          fatbuf[fat_off+1]=b2;
         }
         }
         if(j)
         {
          abswrite(0,2,1,fatbuf);
          printf("disk cleaned \n\n");
         }
    }
    
        /*End of routine clean_data_Area*/
    
        /*routine to change volume label */
    
      change_Label()
    {
      unsigned char buf[512],volb1[11];
      int i,llen,lblpos,sno=5;
      struct ffblk blk;
      i=findfirst("*.*",&blk,0x08);
      if(!i)
      {
       absread(0,1,sno,buf);
       lblpos=findlbl(buf);
       while(!lblpos){ sno++;absread(0,1,sno,buf);
    		   lblpos=lblpos-0x0b;
    		   for(i=0;i<0x0b;i++)
    		   volb1[i]=buf[lblpos+i];
    		   volb1[i]=0x0b;
    		   printf("volume label is %s \n",volb1);
    		  }
      }
      else
      printf("volume label not defined\n");
      printf("enter new label (char):");
      scanf("%s",volb1);
      if(!i)
      {
        llen=strlen(volb1);
        for(i=0;i<=llen;i++,lblpos++)
        buf[lblpos]=volb1[i];
        for(;i<0x0b;i++,lblpos++)
        buf[lblpos]=' ';
        abswrite(0,1,sno,buf);
      }else
      {
        i=_creat(volb1,0x08);
        close(i);
      }
    }
     findlbl(source)
     unsigned char source[512];
     {
      int ofset=0x0b;
      while(ofset<512){
      if(source[ofset]==0x28)
      return(ofset);
      ofset=ofset+0x020;
      }
      return(0);
     }
    
    /* End of routine change _label*/
     
    Last edited by a moderator: Nov 13, 2007

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice