AntiVirus﹣Fag version 3.5 Copyright (C) 1990-1992 by MasterSoft Co. Авдеев С.В., Чикунов В.В. СОДЕРЖАНИЕ От авторов Введение 1. Общий обзор вирусов 2. Описание вирусов 2.1. Бутовые вирусы 2.2. Файловые вирусы 2.2.1 Резидентные вирусы 2.2.2 Нерезидентные вирусы 3. Общий обзор некоторых АнтиВирусов 4. АнтиВирус версии 3.5 4.1. Описание АнтиВируса 4.2. Тесты 4.2.1. АвтоТест 4.2.2. Проверка на защиту от записи 4.2.3. Тестирование BOOT﹣сектора 4.2.4. Тестирование ловушек 4.2.5. Тестирование системной области памяти 4.2.6. Тестирование дисковой операционной системы 4.2.7. Тестирование файлов 4.3. Описание интерфейса 5. Заключение ОТ АВТОРОВ Авторы выражают особую признательность Борисову В.Г. ( КемГУ, г.Кемерово), Никульшину С.И. ( г.Красноярск), Рышкову К.И. ( LIRS Record Studio, г.Красноярск), Янченко В.А. ( Vesta Soft, г.Абакан), а также всем остальным, кто предоставлял нам штаммы вирусов. ВВЕДЕНИЕ В нашей стране большое распространение в школах и институтах получили компьютеры Yamaha MSX и MSX 2. Появилось очень много разработчиков полезного программного обеспечения. Но этим не ограничилась деятельность программис﹣ тов... На IBM﹣компьютерах получили широкое распространение вирусы, которые по﹣ началу считались изумительным достижением программистской мысли. Но вскоре они переросли в настоящее бедствие, приведшее к огромным потерям важной информа﹣ ции, а следовательно и к финансовым потерям. Не следует тешить себя мыслью, что вирусы возможны только на таких солидных машинах, как IBM, VAX, MAC и т.п. ЭТО НЕ ТАК! Программисты не испуга﹣ лись больших проблем с маленькими машинами. И вот результат - на сегодняшний день для ПЭВМ Yamaha существует достаточно много вирусов, доставляющих своим "хозяевам" как маленькие ( "безобидное" размножение), так и большие ( формати﹣ рование дискет и т.д.) неприятности. С течением времени выбор этих вирусов становится все богаче, а список их жертв - все длиннее. К счастью, другие программисты создали программы, борющиеся с вирусами. Эти программы называются АнтиВирусами. Наша программа - одна из них. Цель ее - воздвигнуть как можно больше препятствий на пути распространения компьютерной заразы на компьютерах MSX и MSX2. ЧАСТЬ I Общий обзор вирусов Начнем с того, что вирусы делятся на два типа: 1. Файловые вирусы 2. BOOT﹣вирусы ( бутовые) Отличительной особенностью файловых вирусов является то, что они размно﹣ жаются в файловой среде, т.е. вирус поражает файл путем подклейки к нему. Фай﹣ ловые вирусы делятся еще на два подтипа: 1. Резидентные вирусы - остаются в памяти после работы программы﹣носите﹣ ля. Как правило, эти вирусы поражают системные файлы. Например DOS﹣вирус (опи﹣ сание ниже) 2. Нерезидентные вирусы - работают перед запуском программы﹣носителя. После работы программы они не остаются в памяти и программа﹣носитель часто не подозревает об их существовании. Бутовые вирусы заражают непосредственно диск, полностью записываясь в BOOT﹣сектор. Они являются резидентными. В последнее время от бутовых вирусов начинает отделяться класс вирусов, у которых в BOOT﹣секторе находится только инициализирующая часть, загружающая рабочую часть из других секторов. ЧАСТЬ II Описание вирусов Глава 1. Бутовые вирусы Данные вирусы начинают работу перед загрузкой дисковой операционной сис﹣ темы. Это происходит следующим образом: при загрузке зараженного BOOT﹣сектора управление передается вирусу, который резервирует в памяти область, куда пере﹣ мещает свое тело, устанавливает контроль за операциями общения с диском. Затем продолжается "нормальная" загрузка ( как с незараженной дискеты). При работе операционной системы происходит запись и чтение информации с диска. При очередной операции вирус заражает "здоровые" диски путем записи се﹣ бя во вторую половину BOOT﹣сектора ( смещение +0100h) и установки перехода на себя. Следует заметить, что эти вирусы довольно однотипны по своему строению. Этот отпечаток накладывается ограниченным размером вируса: код вируса обычно не превышает 256 байт. Те же вирусы, у которых в BOOT﹣секторе находится инициализирующая часть при заражении записывают в в BOOT﹣сектор только вызов рабочей части, а ее саму записывают на какое﹣либо ( в зависимости от конфигурации вируса) место на дис﹣ ке. В этом случае размер вируса ограничен разве что емкостью диска ( но надо помнить и о скорости загрузки). Существует, к примеру, вирус Беклемишева ( Ал﹣ ма﹣Ата), который имеет размер 4К. Основной модуль которого находится на 81 треке ( используется нестандартное форматирование). Бутовые вирусы по своему действию очень разнообразны. Среди них есть та﹣ кие, которые "охотятся" за файлами, например, нам встретился вирус, направлен﹣ ный на поиск и уничтожение файла J.COM. Есть вирусы, выводящие на экран специ﹣ фические эффекты, как то: падение букв, вывод поздравительных сообщений ( на﹣ пример, вирус "НАТАША", сделанный Земцовым П.А. и Налимовым Е.В.) и другие. Есть вирусы, которые только "тихо размножаются". Глава 2. Файловые вирусы Так как файловые вирусы делятся на два типа, мы разделим наше описание. Вначале рассмотрим резидентные вирусы. Пункт 1. Резидентные вирусы Конкретный пример резидентного вируса - это DOS﹣вирус, поражающий файл MSXDOS.SYS. После загрузки и перед запуском системы он, подобно BOOT﹣вирусам резервирует себе область памяти, куда себя и записывает. Затем уже запускается система и после ее инициализации вирус изменяет ее так, чтобы он мог проконтролировать все вызовы BDOS. В повседневной работе Вам наверняка часто приходилось копировать и удалять файлы. Каждая такая операция связана с вызовом соответствующих подпрограмм в базовой дисковой операционной системе (BDOS). Так как вирус установил контроль за этими вызовами, то опознав, скажем операцию создания файла, он ищет на диске файл MSXDOS.SYS и заражает его. Подобная схема может быть использована любыми вирусами, она не накладывает ограничений на количество и качество внешних проявлений вирусов. Например, вышеописанный вирус при вызове подпрограммы удаления файлов ( а файлы, как из﹣ вестно, могут удаляться по маске, для этого используются символы '*' и '?') уменьшает внутренний счетчик на единицу и при определенном значении счетчика заменяет части или все имя удаляемого файла на '?', что вызывает удаление не только требуемых файлов, но и некоторых других ( по маске). Это особенно обид﹣ но, когда уничтожается купленная Вами программа или документация. Пункт 2. Нерезидентные вирусы Теперь опишем нерезидентные вирусы. Так как оставить корректный резидент после загрузки системы достаточно сложно, то COM﹣файлы, как правило, поражаются нерезидентными вирусами. Сфор﹣ мулируем стратегию работы данного типа вирусов. Заражение файла обычно происходит одним из двух путей: Первый: помещение в первые три байта ( обыкновенно, но у вируса JUST это не так) перехода на рабочую часть вируса. После работы вируса эти байты восстанавливаются для нормальной работы программы﹣носителя. Второй: помещение вируса целиком перед самой программой. После работы ви﹣ руса программа передвигается в памяти на свои адреса. Цель основной ( рабочей) части нерезидентных вирусов состоит в том, чтобы произвести за один запуск хотя бы одно заражение файла. Способ заражения - это уже детали конкретной реализации вируса, но обычно это приводит к заметному увеличению интервала времени между окончанием загрузки программы и началом ее видимой работы. Этот способ накладывает еще меньше ограничений на размер кода вируса, чем у резидентных вирусов, поэтому по желанию разработчиков вредные эффекты могут быть достаточно изощренны. При высоком мастерстве разработчика последствия инфекции могут быть совершенно непредсказуемыми. ЧАСТЬ III Общий обзор некоторых АнтиВирусов Сегодня уже существует определенный набор антивирусных программ. Они де﹣ лятся на два класса: Детекторы вирусов и Фаги. Детекторы вирусов - это прог﹣ раммы, которые лишь обнаруживают вирусы. Фаги - это программы, способные не только обнаружить, но и удалить вирусы. Рассмотрим несколько антивирусных программ разных авторов. Virus Control Program version 2.0 (C) 1989 by I.Vasilyev Это программа проверяет BOOT﹣сектор на зараженность и в случае вируса по желанию пользователя записывает стандартный либо скоростной BOOT. Speed test (C) by I.Vasilyev Проверяет BOOT﹣сектор аналогично вышеописанной программе, некоторые ячей﹣ ки памяти и тестируются файлы на FC﹣инфекцию. Вирус из файла не удаляет. Virus Killer version 1.0 Проверяет BOOT﹣сектор на два вируса, при обнаружении записывает стандарт﹣ ный BOOT. Virus Detector version 1.0 (C) 1989 by Vlad Проверяет файлы на FC﹣инфекцию. При обнаружении вируса предлагает стереть этот файл с диска. Тест некорректен. Virus Detector versions 1.1, 1.2, 2.1+ (C) 1989, 1990 by MasterSoft Проверяет BOOT﹣сектор на любой BOOT﹣вирус. Проверяет некоторые ячейки па﹣ мяти. Файлы проверяются на DOS﹣вирус, KANA﹣вирус и FC﹣инфекцию. Вирусы не вы﹣ чищает. Virus Detector (C) 1990 by OmegaSoft Тестирует MSXDOS.SYS на DOS﹣вирус. Вычищает его из файла. AntiVirus version 2.6 (C) Vesta Soft, PowerSoft Проверяет BOOT﹣сектор на вирус. При нестандартном BOOT﹣секторе записывает фирменный BOOT. Тестирует ловушки на любое использование, кроме межслотовых вызовов в ROM. При обнаружении выдает нестандартное имя ловушки и первый байт команды. Обнаруживает FC﹣инфекцию, KANA﹣ и MOSCOW﹣вирусы. В версии Vesta Soft авторы пытались удалять вирусы KANA и MOSCOW, но, к сожалению, АнтиВирус зави﹣ сал, а восстанавливаемая программа портилась. ANTI-virus Utility version 2.0 (C) 1990 by I.Vasilyev Оконный АнтиВирус. Проверяет BOOT﹣сектор, при нестандартном секторе запи﹣ сывает стандартный. Проверяет некоторые ячейки памяти. Достаточно корректно проверяет FC﹣инфекцию и удаляет ее из файлов. Кроме перечисленных АнтиВирусов упомянем такие, как: Detector & killer for C-368 virus (C) V1.01 Magus 1991 Virus Halter 1.0 Copyright 1991 by Senatorov & Sildos Virus killer version 2.0 AntiVirus v3.0 Copyright (C) 1989 by I.Vasilyev но все они являются АнтиВирусами прошлого поколения. Практически все перечисленные программы тестируют BOOT﹣сектор некоррект﹣ но, то есть в BOOT﹣секторе может быть и не вирус, а тест даст положительный результат. И наоборот при наличии вируса тест неспособен его обнаружить. Кстати надо отметить, что практически все существующие скоростные BOOT﹣сектора являются некорректными и конфликтуют с программами, перегружающими дисковую операционную систему, например SOS.COM, RAM﹣диски и т.д. Можно сказать, до сегодняшнего дня не было АнтиВирусной программы, удовлетворяющей самым строгим требованиям. Наш AntiVirus﹣Fag создан для заполнения этой бреши в программном обеспечении. Как нам кажется, он сможет удовлетворить требованиям сегодняшнего дня. Итак, перейдем к его описанию. ЧАСТЬ IV АнтиВирус версии 3.5 Глава 1. Описание АнтиВируса Вы приобрели АнтиВирус﹣Фаг версии 3.5 отличающийся от предыдущих версий более полным набором интеллектуализированных корректных тестов и более удобным интерфейсом. Надо отметить, что наш АнтиВирус полезен как начинающим пользова﹣ телям, так и профессионалам. Для запуска АнтиВируса после загрузки операцион﹣ ной системы наберите на клавиатуре: A>av◀┘ После запуска АнтиВируса Вы увидите следующее сообщение: AntiVirus-Fag ver 3.5 Copyright (C) 1990-1992 by MasterSoft означающее что версия этого АнтиВируса - 3.5, сделан он в 1990﹣92 годах и ав﹣ торские права принадлежат компании MasterSoft. Если у Вас АнтиВирус версии 3.5K, то это означает, что эта версия распространяется через Кемеровский Госу﹣ дарственный Университет и содержит в себе проверку на легальность копирования. После заставки включаются в работу многочисленные тесты. Сначала проверя﹣ ется тип компьютера: так как на MSX﹣компьютерах в системе MSX-DOS и на IBM﹣совместимых компью﹣ терах в системе MS DOS выполняемые файлы имеют одинаковое расширение: .COM. Вследствие этого, если Вы работаете и на тех и на других машинах, Вы можете случайно запустить наш АнтиВирус на IBM﹣компьютере. Не волнуйтесь, ничего опасного не произойдет. АнтиВирус выдаст фразу: This program written for MSX-computers. Please find Yamaha-MSX and repeat running. - Эта программа написана для MSX﹣компьютеров. Пожалуйста, найдите Yamaha﹣MSX и повторите запуск. и закончит свою работу. Если АнтиВирус запущен на MSX﹣компьютере, то после заставки производится АвтоТестирование - проверка самого себя на заражение вирусом. Затем АнтиВирус проверяет диск на защиту от записи. Затем продолжается тестирование и при каждом тесте появляются соответствующие сообщения: Testing BOOT - тестирование BOOT﹣сектора; Testing hooks - тестирование ловушек; Testing memory - тестирование системной области памяти; Testing DOS - тестирование дисковой операционной системы; Testing files - тестирование файлов; и That's all... - конец работы АнтиВируса Сообщение 'Ok' означает, что тест дал отрицательный результат, то есть наруше﹣ ний не найдено. Рассмотрим тесты более детально. Глава 2. Тесты Пункт 1. АвтоТест Данным тестом АнтиВирус проверяет самого себя на заражение любым вирусом. Если таковое было найдено, то программа выдает сообщение: I'm damaged by virus !!! - Я разрушен вирусом !!! после чего предлагается перезаписать незараженный АнтиВирус из памяти: Rewrite (Yes/No) ? - Перезаписать (Да/Нет) ? В случае ответа 'Y' происходит восстановление программы. Если вирус, инфицировавший АнтиВирус﹣Фаг, перед тем, как передать управ﹣ ление АнтиВирусу ( см. 2.2.2), заразил другую программу, используя метод FCB ( например, MOSCOW﹣Virus, KANA﹣Virus, и т.д.), а не, скажем, прямую запись секторов ( например, JUST﹣Virus), то АнтиВирус выдает сообщение: Alien used before my start - Чужак пользовался файлом перед моим запуском, вы можете посмотреть, какие изменения произошли в этом файле. Возможно, это сообщение поможет Вам обнаружить новый вирус ( см. часть V, последний аб﹣ зац). Кстати, АнтиВирус переименовывать нельзя так, как это чревато ложным срабатыванием АвтоТеста. Поэтому запомните - исходное имя программы AntiVirus﹣ Fag v3.5 - AV.COM! Пункт 2. Проверка на защиту от записи Диск проверяется на защищенность, и если диск защищен, то выдается сооб﹣ щение: Disk is write protected - Диск защищен от записи и в дальнейшем будет производится только детектирование вирусов без их удаления. Если установлен ключ игнорирования удаления вирусов, то проверка на защиту от записи не производится. Это может быть применено, если у Вас плохой дисковод и записывать что﹣либо на диск нежелательно. Пункт 3. Тестирование BOOT﹣сектора Данный тест читает с диска BOOT﹣сектор ( сектор #0), содержащий в себе программу начальной загрузки и ищет в нем вирус. Если знакомый вирус не най﹣ ден, то проверяется программа начальной загрузки на содержание в себе команд, которые могут быть расценены, как команды вируса ( странные команды). В слу﹣ чае обнаружения вируса программа выдает сообщение следующего содержания: BOOT-Virus - BOOT﹣вирус Далее, если Вы не игнорировали вычищение, происходит удаление вируса (за﹣ метьте: именно удаление вируса, а не перезапись нового BOOT﹣сектора ) из BOOT﹣ сектора, сопровождающееся надписью 'Erase' - 'Удаление'. В случае нахождения в программе начальной загрузки странной команды выводится сообщение: Strange : +xxxxh - Странность по адресу xxxxh от начала сектора Если Вы обладаете достаточной квалификацией, Вы можете загрузить BOOT﹣ сектор в отладчик и проанализировать команду, содержащуюся по этому адресу. Однако следует помнить, что Ассемблер - это язык, в котором и операнды команд тоже можно интерпретировать, как команды. Вследствие этого иногда тест может обнаружить такую псевдокоманду и написать сообщение 'Strange'. Предложим Вам некоторые рекомендации по реагированию на strange. Как пра﹣ вило, strange бывают опасны, если хотя бы один обнаружен в первой половине BOOT﹣сектора ( адрес с 0000h по 00FFh), или два и более - во второй половине ( адрес с 0100h по 01FFh). Это объясняется тем, что если strange в первой половине, то это как правило вирус, загружающий рабочую часть с какого﹣либо сектора диска; здесь достаточно одной команды - чтения с диска. Если strange обнаружены во второй половине, то, как правило, это означает, что это вирус, целиком находящийся во второй половине BOOT﹣сектора и в нем обязательно должно содержаться как минимум две команды общения с диском: чтение и запись. Если же во второй половине обнаружен один strange, то есть все основания предположить, что это не вирус. Если программа в BOOT﹣секторе при загрузке не может быть запущена, то вы﹣ дается сообщение: Unloading BOOT - Незагружаемый BOOT﹣сектор В случае, если диск не защищен от записи, и не стоит ключа игнорирования записи, после вывода любого из двух последних сообщений, выводится запрос: Write Standard, Fast or None (S,F,N) ? -Записать стандартный, скорост﹣ ной, или не записывать ничего В случае ответа на этот запрос - 'S' - записывается стандартный BOOT﹣сек﹣ тор; в случае ответа 'F' - записывается фирменный скоростной BOOT версии 2.06; на ответ же 'N' ничего не записывается и BOOT﹣сектор остается прежним. Пункт 4. Тестирование ловушек Как известно, в ПЗУ нельзя ничего записать или изменить и, поэтому, для того, чтобы программы, записанные в ПЗУ можно было расширять и надстраивать, в компьютерах MSX программистам предоставлена возможность использования так называемых ловушек ( англ. hook - крючок). В различных местах ПЗУ существуют вызовы подпрограмм в старших адресах ОЗУ. А на месте этих подпрограмм оставле﹣ но три или пять байтов, заполненных командами RET ( возврат из п/п, код:C9h). Любая программа может заменить эти команды на свои для достижения поставленных целей. Например, ловушки используются RAM﹣дисками, сетевыми операционными сис﹣ темами для подключения драйвера дополнительного диска (драйвер - это программа управления чем﹣либо). Вирусы тоже пользуются этими ловушками, чтобы про﹣ изводить свои вредные эффекты ( размножение, порча дискет, искажение ин﹣ формации и т.п.). Тест ловушек выявляет те ловушки, которые используются программами, нахо﹣ дящимися резидентно в ОЗУ и указывающие на подпрограммы, не находящиеся в ядре дисковой операционной системы. То есть как раз те ловушки, на которые следует обратить особое внимание. При обнаружении такой ловушки следует сообщение: Bad hook : xxxxh - Плохая ловушка по адресу xxxxh Если у Вас хватает знаний, Вы можете исследовать программу, использующую эту ловушку. При соответствующем ключе (/u) тест может выдавать абсолютно все используемые ловушки, при этом выводится фраза, типа: Using hook : xxxxh - Используемая ловушка по адресу xxxxh Вы можете указать ключ (/c), дающий возможность удалить какие﹣либо ловушки, то есть заполнить их командой RET. Пример: Bad hook : F270h. Erase (Yes/No) ? - Удалить ? если последовал ответ 'Y', то произойдет удаление и надпись изменится в Bad hook : F270h. Erased - Удален если ответ был - 'N', то удаление производиться не будет. Одной из возможных целей удаления может быть нейтрализация действия виру﹣ са в памяти, например, некоторые вирусы используют ловушку F270h. Однако, уда﹣ лением следует пользоваться осторожно, так как ловушки используются не только вирусами! Например, некоторые драйвера RAM﹣дисков используют ту же самую ло﹣ вушку и очищение ее в этом случае крайне нежелательно. Для этого в АнтиВирусе предусмотрено автоматическое детектирование и очищение ловушек используемых известными нам вирусами, это особенно будет полезно обыкновенным пользовате﹣ лям. Данная возможность включается по умолчанию и отменяется ключом (/c) -руч﹣ ное удаление ловушек. Пункт 5. Тестирование системной области памяти Надо отметить, что, хотя тест и носит такое название, но отображает не только состояние системной области памяти. Потому, что в целях экономии места на экране и дабы не утомлять пользователя ( следуя концепции АнтиВируса выводить сообщения только о том, что отлично от стандартного), мы соединили несколько тестов в один. Следующие два сообщения выдаются тестом маппера. На компьютерах MSX2 име﹣ ется маппер, с помощью которого можно управлять страницами ОЗУ через порты 0FCh, 0FBh, 0FEh, 0FFh ( для подключения на адреса 0000h, 4000h, 8000h и C000h соответственно). На компьютерах MSX1, где такого маппера нет, данный тест от﹣ ключается. No MSX2 mapper - Отсутствует маппер MSX2; Если расположение страниц маппера отлично от стандартного: 3 2 1 0, то выводится: MSX2 mapper is 3>4 1 0 - Расположение страниц маппера MSX2: 3>4 1 0 ( нестандартность помечена стрелочкой ">"); Следующие пять сообщений выводятся тестом драйверов, который был автоном﹣ ным тестом в AntiVirus﹣Fag v3.4. RAM drive is ON - Подключен RAM﹣диск; FDD function modified - Изменена функция флоппи﹣дискового драйвера; FD drive is OFF - Флоппи﹣дисковый драйвер отключен (программно); FD drive x: allocated in RAM - Драйвер диска x: размещен в ОЗУ; FDD slot for x: is off-line - Слот драйвера флоппи﹣диска x: отключен ( т.е. драйвер отключен аппаратно). Base RAM at xxxxh presented as ROM! - базовая страница ОЗУ с адреса xxxxh представлена как ПЗУ! это означает, что при перезагрузке компьютера программа инициализации посчитает эту страницу (16К) ОЗУ страницей ПЗУ и произведет ее инициализацию, которая заключается в запуске программы, находящейся в этой странице с адреса, который лежит по адресу xxxxh+2. Тем самым еще до того, как на Вашем компьюте﹣ ре загрузится MSXDOS, вирус получит управление! Но на это следует обращать внимание только тогда, когда вы знаете, что после RESET'а ничего не должно ос﹣ таваться, так как это может быть и не вирус а, скажем, программа ND, которая тоже остается после перезагрузки. Invalid VRAM size - Недействительный размер видеопамяти это сообщение указывает на то, что действительный размер видеопамяти и тот, который указан в системных ячейках, не совпадают. Это может быть проявле﹣ ние программы GFI или драйвера какого﹣нибудь RAM﹣диска, но не исключено, что и авторы вирусов могут применить этот способ ( изменить размер VRAM). DANGEROUSE SIZE OF FREE MEMORY - опасный размер свободной памяти это сообщение указывает на то, что верхняя граница системной памяти, от﹣ веденной для исполняемых программ расположена ниже 8100h. Так как обычно эта граница используется, как начальное значение указателя стека, то стек может быть заслонен ПЗУ при вызове каких﹣либо функций NET﹣BIOS или BASIC'а, что не﹣ избежно приведет к зависанию. Different FDD & BASIC HIMEM - FDD HIMEM и BASIC HIMEM различны это означает, что указатели на верхний предел свободной памяти BASIC HIMEM ( FC4Ah) и FDD ROM HIMEM ( F349h) указывают не на одну и ту же границу. Это может быть вирус, который зарезервировал себе кусок памяти. Но могут быть и некоторые другие программы, которые резервируют себе память перед MSX-DOS или в BASIC'е, но забывают дублировать эти ячейки. Однако в некоторых случаях эти значения не должны совпадать, тогда это сообщение не выводится. Wrong DOS HIMEM relativity FDD HIMEM - Неправильный адрес DOS HIMEM относительно FDD HIMEM это означает, что указатель на верхний предел свободной памяти в DOS - DOS HIMEM ( F34Bh) указывает выше FDD HIMEM ( что вообще ошибочно), или одина﹣ ков с ним. Это, опять же, может быть или вирус, загрузившийся перед MSX-DOS или программы, подобные RAM﹣Disk'у. Следующие три сообщения выводит тест Вызовов BIOS: BIOS call xxh is suspicious! - Подозрительный вызов BIOS'а xxh! означает, что переход на вызов BIOS'а указывает не в то место, которое уготовила ему система, а в какое﹣то другое. Вирус может использовать это ког﹣ да, например, он желает проявлять свой вредный эффект при соответствующем вы﹣ зове BIOS'а или от таймера... BIOS call xxh is OFF! - Вызов BIOS'а xxh отключен! это значит что данный вызов BIOS'а не будет работать, т.е. первый байт обработчика - это команда RET ( возврат). Если АнтиВирус обнаружил, что отклю﹣ чен BIOS 38h, то это может быть всего навсего сделано для ускорения работы с диском ( в некоторых нестандартных системах). BIOS call xxh is BAD! - Очень нестандартный вызов BIOS'а xxh! это значит, что первая команда обработчика BIOS'а не переход на основное свое тело ( так, как должно быть), а какая﹣либо другая команда ( за исключени﹣ ем RET) Now IM2! Interrupt hooked at xxxxh - Включен режим прерываний 2! Прерывание перехвачено по адресу xxxxh Всего на MSX компьютерах есть три режима прерываний: IM0 - при прерывании выполняется команда с шины данных; (но так как никто эту команду специально не посылает, на шине оказывается байт 0FFh, что в переводе на ассемблер означает 'RST 38h', то есть происходит вызов программы с адреса 0038h. Там у системы есть соответствующий обработчик. IM1 - при прерывании просто выполяется программа с адреса 0038h; как видим, режимы прерываний 0 и 1 практически идентичны. IM2 - при прерывании выполняется программа, адрес адреса которой вычис﹣ ляется микропроцессором следующим образом : младший байт берется с шины данных (в нашем случае это 0FFh), а старший - из внутреннего регистра Z80, имеющего имя Q ( или I); видно, что вирусы могут использовать это свойство в своих целях, скажем "висеть" на прерываниях ( которые происходят 60 раз в секунду) и это не будет заметно. Этот тест как раз и предназначен для обнаружения этого режима прерываний и выводит адрес нового обработчика прерываний. INTERRUPT code changes. See xxxxh - изменяется код обработчика прерываний. Смотри по адресу xxxxh Возможны вирусы, которые вешаются на прерывания посредством изменения ко﹣ да обработчика и используют прерывания для своих вредных целей. По этому адре﹣ су находится первая команда изменяющегося участка кода. INTERRUPT is idle - прерывание работает вхолостую Это значит, что при прерывании не выполняется программа обработчика пре﹣ рываний в BIOS'е. Вышеприведенные два сообщения не выводятся в случае, если вызов BIOS'а 38h выключен. CALSLT code changes. See xxxxh - изменяется код обработчика подпрограммы BIOS'а CALSLT RST 30 code changes. See xxxxh - изменяется код обработчика RST 30. Смотри по адресу xxxxh Следует отметить, что вызов BIOS CALSLT и прерывание RST 30 используется для межслотовых вызовов каких﹣либо подпрограмм. Вирус, отслеживая эти вызовы, может подменять функцию BIOS'ов и т.п. Если вирус меняет код обработчика, то АнтиВирус выдаст соответствующее сообщение и адрес первой команды изменяющего﹣ ся участка кода. RDSLT code changes. See xxxxh - изменяется код обработчика подпрограммы BIOS'а RDSLT Вызов BIOS'а RDSLT нужен для чтения информации с других слотов. Если из﹣ меняется код обработчика RDSLT, то АнтиВирус выдаст вышеприведенное сообще﹣ ние. Пункт 6. Тестирование дисковой операционной системы Данный тест предоставляет большие возможности для выявления любых (!) ви﹣ русов, контролирующих вызовы BDOS. При обнаружении контроля он выдает на экран сообщение: BDOS is checking! - BDOS контролируется! Например, при запуске программы в отладчике DBG контролируется BDOS. Так﹣ же BDOS'ы контролируются DOS﹣вирусом (см. 2.2.1), когда он находится в памяти. Сущность этого вируса мы описали выше. Этот тест достаточно универсален, он ВЫЯВЛЯЕТ ЦЕЛЫЙ КЛАСС ВИРУСОВ. Также при обнаружении в памяти DOS﹣вируса последний удаляется. При этом на экране появляется надпись: DOS-Virus. Erased - DOS﹣вирус. Удален Также возможны вирусы, которые изменяют код DOS. В случае присутствия та﹣ кого вируса в памяти, при вызове BDOS'ов программа DOS выполняется нелинейно в силу изменения ее кода. В этом случае АнтиВирус выведет следующее сообщение: DOS code changes. See xxxxh - Код DOS изменяется. Смотри по адресу xxxxh По этому адресу находится первая команда изменяющегося участка кода. Кроме того этот тест также отображает состояние дисковой операционной системы. При обнаружении каких﹣либо несоответствий возможны сообщения: Non-standard DOS error trap - Нестандартная обработка ошибок диска При этой ошибке могут неправильно обрабатываться дисковые ошибки. Non-standard ^C trap - Нестандартная обработка комбинаций CTRL+C или CTRL+STOP При этой ошибке может неправильно обрабатываться нажатие CTRL+C. DOS restart is not into DOS. See xxxxh - Переход на рестарт DOS'а не внутрь DOS, а на подпрограмму по адресу xxxxh Кто﹣то изменил переход на рестарт DOS'a в свою программу, находящуюся вне DOS. Возможно, это вирус, активизирующийся после работы программы, но, напри﹣ мер, STS﹣COMMAND изменяет это. Его подпрограмма находится с адреса FA80h. DOS restart is above DOS kernel. See xxxxh - Переход на рестарт DOS'а указывает выше ядра DOS, на подпрограмму с адреса xxxxh Возможно вирус запустится так, что не может быть отделим от DOS. Для это﹣ го включен этот дополнительный тест на то, что он указывает не в ядро. А смысл его тот же, что и у предыдущего сообщения. DOS restart is used - Занят "теплый" рестарт DOS Это означает, что кто﹣то изменил переход на рестарт DOS, но он все﹣таки указывает внутрь ядра DOS. DOS restart is bad - Плохой рестарт DOS Это означает, что на рестарте DOS стоит не безусловный переход (JP). BDOS entry conflict - Ошибка входа в BDOS При этой ошибке невозможна нормальная работа системы с batch﹣файлами, в COMMAND.COM и т.д. BDOS entry is Bad - Плохой вход в обработчик BDOS'а Это значит, что команда в начале DOS'а не безусловный переход на обработ﹣ чик BDOS'а ( JP), а какая﹣либо другая. BDOS jump is not into DOS. See xxxxh - Переход на обработку BDOS'а указывает не в тело DOS (*) Это означает, что вирусы, контролирующие BDOS'ы, могут переделать переход сначала на себя, а уж затем в тело DOS. BDOS jump is above DOS kernel. See xxxxh - Переход на обработку BDOS'а указывает выше ядра DOS Если вирусы инициализируются сразу перед DOS'ом, то они могут сделать так, что тело вируса будет как бы продолжением самого DOS'а. Поэтому сообщение (*) выводиться не будет. Для этого введена дополнительная проверка, указывает ли переход на ядро DOS, как его можно определить для стандартной системы. Поэтому, если система уж очень нестандартно устроена внутри, или вообще MSX-DOS - несовместимая, то на данное сообщение не следует обращать внимание. Как Вы уже заметили, после сообщения об ошибке имеется фраза: See xxxxh - Смотри по адресу xxxxh, где xxxxh - это адрес, куда указывает переход на обработку BDOS. Скорее всего, по этому адресу Вы обнаружите вирус. Пункт 7. Тестирование файлов Этот тест проверяет Ваши файлы на пять вирусов, как то: DOS﹣вирус - его действие описано выше (см. 2.2.1); FC﹣инфекция ( Falling Chars) - вирус "Падающие буквы"; KANA﹣вирус - искажение информации, передаваемой на принтер путем уве﹣ личения кода каждого символа на единицу; JUST﹣вирус - портит информацию на диске во время своего размножения; MOSCOW﹣вирус - портит код программы перед запуском; Перед тестированием файлов проверяется тип информации на диске, если он не соответствует стандарту, применяемому на MSX﹣компьютерах, то выводится со﹣ общение: Unsupported media type - Неподдерживаемый тип информации Это сообщение также выдается, если диск не вставлен в дисковод. Далее проверяются все SYS﹣ и COM﹣файлы на диске. SYS﹣файлы проверяются на заражение DOS﹣вирусом, а COM﹣файлы - на заражение FC﹣инфекцией, KANA﹣, JUST﹣ и MOSCOW﹣вирусами. При нахождении в файле вируса, на экран выводится сообщение, идентифицирующее вирус и, если код вируса в зараженной программе не испорчен, диск не был защищен от записи и не был установлен ключ игнорирования, то любой из этиx вирусов вычищается из файла, и производится повторная проверка файла на случай вложенных вирусов. Также, если размер SYS﹣ или COM﹣файла равен нулю, то выдается сообщение: File is empty - Файл пуст; Если размер COM﹣файла более 64 K, то выводится сообщение: File too big - Файл слишком большой; Не будем утруждать читателя описанием вирусов, так как детальное описание может привести к обратным результатам - к распространению других вирусов с по﹣ добной структурой ( вспомним пример описания Земцовым П.А. и Налимовым Е.В. вируса "НАТАША"). Глава 3. Описание интерфейса Наш АнтиВирус имеет достаточно большой, но легко запоминающийся набор ключей, существенно расширяющих возможности программы. Ключи можно подразде﹣ лить на основные и составные. Перечислим их: Основные ключи: /h -подсказка ( Help) наш АнтиВирус имеет встроенную подсказку, и Вы можете не обращаясь к до﹣ кументации вспомнить ту или иную функцию; /i -невычищение вируса ( Ignore) при этом ключе игнорируется вычищение вирусов из BOOT﹣сектора и из фай﹣ лов, а на экран выводятся только предупреждающие сообщения; также не произво﹣ дится никакой записи на диск (см. 4.2.2); /p -отмена паузы при заполнении экрана ( disable Prompt); /k -обязательная перезапись BOOT﹣сектора ( Kill BOOT) если Вам вдруг понадобилось обновить BOOT﹣сектора Ваших дисков, то при помощи этого ключа Вы можете перезаписать стандартный или скоростной BOOT﹣сек﹣ тор при любом результате тестирования BOOT'а; /c -возможность очищения hook'ов ( Clear hooks) этот ключ дает возможность очистить ловушки. При этом ключе не происходит автоматическое детектирование и удаление вирусов, 'висящих' на ловушках ( см. 4.2.4.) и пользователь сам определяет, какие ловушки очистить, а какие - нет; /u -просмотр занятых hook'ов ( Used hooks) этот ключ указывает тесту ловушек показать все используемые ловушки; /w -проверка нескольких дисков ( Wait next disk) при помощи этого ключа Вы можете проверить несколько дисков подряд, не выходя из АнтиВируса. При этом АнтиВирус будет выдавать запрос, вида: Insert diskette and strike any key - Вставьте дискету и нажмите любую клавишу; /+ или /- -подсказка по распределению тестов выводит подсказку по использованию составных ключей ( см. ниже); /a -некоторая информация ( Authors) информация для тех, кто имеет АнтиВирус версии 3.5; Примеры: A>av b:/i/w -игнорировать вычищение вирусов, при этом проверить несколько дисков на дисководе B; A>av/+ -вывести подсказку по распределению тестов с помощью составных ключей; Составные ключи ( ключи распределения тестов), они состоят из ключа: /+ -Выполнять только указанные тесты /- -Не выполнять указанные тесты и букв, идентифицирующих тесты: b -тест BOOT﹣сектора ( Boot); h -тест hook'ов ( Hook); m -тест системной области памяти ( Memory); d -тест дисковой операционной системы ( DOS); f -тест файлов ( Files); Как использовать составные ключи: Вы указываете ключ распределения /+ либо /-, затем, без каких либо разде﹣ лителей, указываете идентификатор теста. Примеры: A>av/+bm -проверить BOOT﹣сектор на диске в текущем дисководе и проверить системную область памяти A>av/-bf -проверить только память ( без тестов BOOT﹣сектора и файлов) A>av/+bhmd или A>av/-f -мы обычно пользуемся этой командой, означающей проверку BOOT﹣сектора и памяти ( ловушек, системной области и DOS). Надо отметить, что если будет указан несуществующий драйвер, то будет проверяться только память, то есть следующие примеры одинаковы по своему дей﹣ ствию: A>av v: или A>av/+hmd или A>av/-bf Каждый из Вас может установить с помощью ключей нужную конфигурацию тестов АнтиВируса. И еще, если наш АнтиВирус будет выдавать столько сообщений, что они не будут умещаться на экране, то автоматически выведется сообщение: Push any key for continue - Нажмите любую клавишу для продолжения; Кроме этого Вы можете в любой момент приостановить печать нажатием комби﹣ нации CTRL+S, следующее нажатие той же комбинации приводит к печати следующего символа, нажатие других клавиш возобновит нормальную печать. ЧАСТЬ V Заключение Напоследок следует рассказать пользователям об Авторских Правах. В 1971 году была принята Парижская редакция Бернской конвенции об Авторс﹣ ких Правах. И что бы Вы не говорили, ее желательно соблюдать. Данный AntiVi﹣ rus﹣Fag версии 3.5 является коммерческим программным продуктом. Поэтому насто﹣ ятельная просьба не способствовать нелегальному распространению наших прог﹣ рамм. Те, кто хотел бы приобрести любой из наших программных продуктов или по﹣ лучить консультацию по ним, могут обратиться в компанию MasterSoft по адресам: 660115 Красноярск, а/я 10680, MasterSoft либо 660079 Красноярск, а/я 3145, Авдееву С.В. либо 660062 Красноярск, Высотная 21в-115, Чикунову В.В. Данная программа является законченным программным продуктом. Незаконное копирование или любое изменение кода программы является нарушением Авторских Прав! Требуйте полный комплект поставки! В него входят файлы: 1) AV.COM - АнтиВирус﹣Фаг версии 3.5; 2) AV.DOC - Документация по АнтиВирусу версии 3.5; Распространение АнтиВируса версии 3.5 без файла документации является на﹣ рушением Правил Распространения. Оригинальные тесты АнтиВируса версии 3.5: test BOOT, test DOS, test memory являются интеллектуальной собственностью компании MasterSoft, их использование в собственных программных продуктах разрешается, но с обязательным упоминанием авторских прав компании MasterSoft. Как Вы уже заметили, мы не даем подробное описание алгоритмов тестов. За﹣ интересованные лица могут получить справки написав нам по одному из выше пере﹣ численных адресов или приобрести полное техническое описание за очень дополни﹣ тельную плату. Компания MasterSoft состоит из нескольких человек. Диапазон программных разработок достаточно широк - от игровых программ до операционных систем. Нашу продукцию отличает высокая конкурентоспособность и серьезность подхода к раз﹣ работке программного продукта. Компания MasterSoft предлагает Вам стать нашим зарегистрированным пользо﹣ вателем. В этом случае Вам будут высылаться рекламные буклеты наших новых программных продуктов. Вы сможете одними из первых получать новые версии наших программ, а также любые консультации по любому нашему программному продукту непосредственно от авторов. Если Вы предложите нам новые технологии обнаружения вирусов, то Вы можете стать зарегистрированным пользователем. Если Ваш метод будет признан нашими специалистами достаточно оригинальным, то Вы получите скидку при приобретении АнтиВируса с применением Вашей идеи и в документации будет упомянуто о том, чья и какая идея была применена в данной версии. Если Вы обнаружили новый вирус, Вы можете прислать его нам, мы напишем новую версию АнтиВируса﹣Фага, который будет вычищать этот вирус. В этом случае Вы сможете получить новую версию по сниженной цене ( за штамм вируса - 90% от текущей цены, за принципиально новый вирус - 50%-скидка пользователям, купив﹣ шим предыдущие версии). При приобретении нескольких копий АнтиВируса﹣Фага производится скидка. И не забудьте, кто сделал эту замечательную программу Авдеев С.В., Чикунов В.В. (C) MasterSoft, 1992