Разное - Вирус в IS-DOS.

ZX Power #03
5mD ВИРУС В ИС-ДОС(C)1997 Mechanic ________________________________   Слыхал, что некоторые считают вирусы наSpectrum'е   несерьезной  вещью.  Действи-тельно,  когда  речь  идет о "Tape LoadingError  System", разговор о вирусах неумес-тен.  Но  вот когда речь заходит о TR-DOS,IS-DOS,  или  другой  системе,  где  любаяпрограмма в состоянии дотянуться до данныхи программ, абсолютно ее не касающихся, ноимеющих  почетное звание ее соседей по на-копителю, поговорить о вирусах приходится.    КАК Я ВСТРЕТИЛ ЕГО    Как-то  раз, разбирая новый дистрибутивс программами  к IS-DOS Classic 4.5, я си-дел и запускал по очереди все *.com файлы,которые только мог. И вот, совершенно слу-чайно,  обнаруживаю, что одна программа изчисла  моего  верного  проверенного  софтавдруг  изменила  длину. Заметить эту мета-морфозу помогло то, что прогу-то эту напи-сал  я  сам,  и прекрасно помню, что в нейникак не может быть 2 блока длины...   Тут меня "пробило" - Вирус! Настоящий!   Вспоминаю, чего в таких случаях совето-вал Фигурнов в своих учебниках, и аккурат-но  копирую  файл  на пару дисков, которыхмне  не  очень жалко (шутка ли - живой су-постат :-о ). Потом перегрузился на старуюиспытанную  версию от 24.4.94 и начал изу-чать "трофей".   То, что было найдено в этом файле, былоименно  тем, чего я там и искал. Там сидел...  да-да, именно вирус, самый такой себенастоящий.  Сперва  я конечно дико обрадо-вался:  "Ура..  Наконец-то..  Свершилось..Теперь  и у нас..", а потом - "Идиот! Чемурадуешься?!".  Вот здесь я начал понимать,что  теперь  все, кому не лень, станут пи-сать подобные "микрософты" и совать их ку-да  ни  попадя. Мне же придется теперь бо-роться с новой проблемой, без которой, на-верняка,  было  бы скучнее, зато - спокой-нее.   Раньше  мне  уже  попадались программы,умеющие  делать  всякие пакости, но они неразмножались, как всякий нормальный вирус.Этот  же  в  заражаемом файле создает своюточную  копию,  так что сложно понять, ктоименно кого заразил.   Раз  уж  принято софт такого рода назы-вать  либо именем автора, либо именем док-тора,  нашедшего  способ  лечения, а авторуказан  не  был,  то  паразит  был  названvir00mc.   Так  как  зараженные  файлы я обнаружилеще в 2х других каталогах, то пришлось на-писать  к нему антивирус, который и прила-гаю в надежде, что его поместят в приложе-ние.     КТО ЖЕ ОН ТАКОЙ    Сама  по себе программа совсем безобид-ная  -  вся ее работа состоит в том, чтобызаразить файл своей копией. Она не пытает-ся писать ругательства, форматировать дис-ки,  перекачивать  пароли  по  E-mail :) ит.д. Просто так случилось, что при дописы-вании  вируса  к программе exebat.com пос-ледняя  теряет  работоспособность - вся ееработа сводится к сбросу системы. Обуслов-лено это тем, что exebat (и некоторые дру-гие программы) имеют критичную длину файлаили  другие  особенности, мешающие им кор-ректно работать с подобным "довеском".   Реагирует  вирус на файлы с расширениемc?m  (com,  cum, cam etc), которые при за-пуске зараженной программы находятся в те-кущем  каталоге. Текущий каталог - тот ка-талог,  в котором находится курсор (описа-тель  которого  сидит  в  векторе файловойслужбы), и вовсе не обязательно, что зара-женный  *.com  запустился  именно из него.Так  вирус  путешествует  по  каталогам  иустройствам.   Номер  файла-жертвы берется из счетчикапрерываний клавиатурного драйвера и округ-ляется  до  32.  Для нормального зараженияфайла,  открытого  таким образом, первые 3байта   в  нем  должны  содержать  команды  LD C,НОМЕР_РЕСТАРТА  RST #10 ,с  которых  начинается  львиная  доля всех*.com  файлов в ИС-ДОС. К тому же все опе-рации чтения/записи должны пройти без оши-бок  -  при возникновении любой ошибки приработе   вирус  тотчас  отдает  управлениепрограмме-носителю.   Использование счетчика прерываний обес-печивает случайность заражения файла, ведьне  каждый  же раз там сидит именно нужныйc?m.   После  открытия и определения наличия вначале файла нужных команд, вирус заменяетих  командой CALL ВИРУС, вычисляет необхо-димые  смещения  (для  CALL ВИРУС - тоже),удлиняет  файл-жертву  на 255 байт (иногдадля  этого ему приходится перевести файл всегментированный вид) после чего подготав-ливает  свое тело для выгрузки, запоминаетв нем все необходимое уже для нового виру-са,  выгружает новую свою копию в удлинен-ный файл, восстанавливает номер рестарта всвоем  теле  для  корректной работы своегособственного носителя (не только что зара-женного),  скрывая  следы работы, вызываетрезидента  командой @calc, открывает файл,что  был открыт до запуска вируса (его но-мер   был   предусмотрительно   считан  из$FNUMB), и, наконец, возвращает управлениеносителю, выполнив сперва за него украден-ную команду из начала файла.   Интересно,   что   первая   команда  невосстанавливается,  и теоретически возмож-но, что зараженный *.com при неоднократномперезапуске из точки входа сможет заразитьнесколько  файлов  с  одной загрузки в па-мять.   При  работе  vir00mc  использует вирту-альный  диск,  рестарты уровней DOS, DUD иCOM,  а также вызывает резидентную задачу.И все это в 255 байтах!   Остается  лишь сказать, что вирус напи-сан  действительно  Классно, и выразить заэто благодарность его создателям.   По  поводу  защиты  от вирусов в ИС-ДОСмогу посоветовать чтение подобных инструк-ций для пользователей IBM PC [заменяя "IBMPC"  на  "ZX-Spectrum", а названия ненапи-санных  еще  программ  :( сопровождать пе-чальным  вздохом]. Все остальные указанныетам  меры предосторожности не будут лишни-ми.   Хочу  надеяться,  что редакция ZX-POWERбудет  продолжать собирать и знакомить чи-тателей  с  новинками  вирусной индустрии,что  должно  сохранить всем кучу времени инервов.      С уважением,Mechanic/X-Project   E-mail:konstantin_k@hotmail.com________________________________0 и 1725000