Инструменты пользователя

Инструменты сайта


msx:antivirus:mastersoft

AntiVirus﹣Fag для MSX от MasterSoft

AntiVirus﹣Fag version 3.5
Copyright (C) 1990–1992 by MasterSoft Co.
Авдеев С.В., Чикунов В.В.

Оригинал файла с документацией

Файлы программ здесь.

От авторов

Авторы выражают особую признательность:

  • Борисову В.Г. (КемГУ, г.Кемерово),
  • Никульшину С.И. (г.Красноярск),
  • Рышкову К.И. (LIRS Record Studio, г.Красноярск),
  • Янченко В.А. (Vesta Soft, г.Абакан),

а также всем остальным, кто предоставлял нам штаммы вирусов.

Введение

В нашей стране большое распространение в школах и институтах получили компьютеры Ямаха КУВТ стандартов MSX 1 и MSX 2. Появилось очень много разработчиков полезного программного обеспечения. Но этим не ограничилась деятельность программистов… На IBM–компьютерах получили широкое распространение вирусы, которые поначалу считались изумительным достижением программистской мысли. Но вскоре они переросли в настоящее бедствие, приведшее к огромным потерям важной информации, а следовательно и к финансовым потерям.

Не следует тешить себя мыслью, что вирусы возможны только на таких солидных машинах, как IBM, VAX, Macintosh и т.п. ЭТО НЕ ТАК! Программисты не испугались больших проблем с маленькими машинами. И вот результат — на сегодняшний день для ПЭВМ стандарта MSX существует достаточно много вирусов, доставляющих своим «хозяевам» как маленькие («безобидное» размножение), так и большие (форматирование дискет и т.д.) неприятности. С течением времени выбор этих вирусов становится все богаче, а список их жертв — все длиннее.

К счастью, другие программисты создали программы, борющиеся с вирусами. Эти программы называются АнтиВирусами. Наша программа — одна из них. Цель её — воздвигнуть как можно больше препятствий на пути распространения компьютерной заразы на компьютерах MSX 1 и MSX 2.

1. Общий обзор вирусов

Начнем с того, что вирусы делятся на два типа:

  1. Файловые вирусы
  2. Вирусы загрузочного сектора (Boot﹣вирусы)

Отличительной особенностью файловых вирусов является то, что они размножаются в файловой среде, т.е. вирус поражает файл путем подклейки к нему. Файловые вирусы делятся еще на два подтипа:

  1. Резидентные вирусы — остаются в памяти после работы программы﹣носителя. Как правило, эти вирусы поражают системные файлы. Например DOS﹣вирус (описание ниже)
  2. Нерезидентные вирусы — работают перед запуском программы﹣носителя. После работы программы они не остаются в памяти и программа﹣носитель часто не подозревает об их существовании.

Вирусы загрузочного сектора заражают непосредственно диск, полностью записываясь в загрузочный сектор. Они являются резидентными. В последнее время от вирусов загрузочного сектора начинает отделяться класс вирусов, у которых в загрузочном секторе находится только инициализирующая часть, загружающая рабочую часть из других секторов.

2. Описание вирусов

2.1. Вирусы загрузочного сектора

Данные вирусы начинают работу перед загрузкой дисковой операционной системы. Это происходит следующим образом: при загрузке зараженного загрузочного сектора управление передается вирусу, который резервирует в памяти область, куда перемещает своё тело, устанавливает контроль за операциями общения с диском. Затем продолжается «нормальная» загрузка (как с незаражённой дискеты).

При работе операционной системы происходит запись и чтение информации с диска. При очередной операции вирус заражает «здоровые» диски путем записи себя во вторую половину загрузочного сектора (смещение +0100h) и установки перехода на себя. Следует заметить, что эти вирусы довольно однотипны по своему строению. Этот отпечаток накладывается ограниченным размером вируса: код вируса обычно не превышает 256 байт.

Те же вирусы, у которых в загрузочном секторе находится инициализирующая часть при заражении записывают в в загрузочный сектор только вызов рабочей части, а её саму записывают на какое﹣либо (в зависимости от конфигурации вируса) место на диске. В этом случае размер вируса ограничен разве что емкостью диска (но надо помнить и о скорости загрузки). Существует, к примеру, вирус Беклемишева (Алма﹣Ата), который имеет размер 4 Кбайта. Основной модуль которого находится на 81 треке (используется нестандартное форматирование).

Вирусы загрузочного сектора по своему действию очень разнообразны. Среди них есть такие, которые «охотятся» за файлами, например, нам встретился вирус, направленный на поиск и уничтожение файла J.COM. Есть вирусы, выводящие на экран специфические эффекты, как то: падение букв, вывод поздравительных сообщений (например, вирус «НАТАША», сделанный Земцовым П.А. и Налимовым Е.В.) и другие. Есть вирусы, которые только «тихо размножаются».

2.2. Файловые вирусы

Так как файловые вирусы делятся на два типа, мы разделим наше описание. Вначале рассмотрим резидентные вирусы.

2.2.1. Резидентные вирусы

Конкретный пример резидентного вируса — это DOS﹣вирус, поражающий файл SXDOS.SYS. После загрузки и перед запуском системы он, подобно вирусам загрузочного сектора резервирует себе область памяти, куда себя и записывает. Затем уже запускается система и после её инициализации вирус изменяет её так, чтобы он мог проконтролировать все вызовы BDOS. В повседневной работе Вам наверняка часто приходилось копировать и удалять файлы. Каждая такая операция связана с вызовом соответствующих подпрограмм в базовой дисковой операционной системе (BDOS). Так как вирус установил контроль за этими вызовами, то опознав, скажем операцию создания файла, он ищет на диске файл MSXDOS.SYS и заражает его. Подобная схема может быть использована любыми вирусами, она не накладывает ограничений на количество и качество внешних проявлений вирусов. Например, вышеописанный вирус при вызове подпрограммы удаления файлов (а файлы, как известно, могут удаляться по маске, для этого используются символы «*» и «?») уменьшает внутренний счетчик на единицу и при определенном значении счетчика заменяет части или все имя удаляемого файла на «?», что вызывает удаление не только требуемых файлов, но и некоторых других (по маске). Это особенно обидно, когда уничтожается купленная Вами программа или документация.

2.2.2. Нерезидентные вирусы

Теперь опишем нерезидентные вирусы.

Так как оставить корректный резидент после загрузки системы достаточно сложно, то COM﹣файлы, как правило, поражаются нерезидентными вирусами. Сформулируем стратегию работы данного типа вирусов.

Заражение файла обычно происходит одним из двух путей:

  • Первый: помещение в первые три байта (обыкновенно, но у вируса JUST это не так) перехода на рабочую часть вируса. После работы вируса эти байты восстанавливаются для нормальной работы программы﹣носителя.
  • Второй: помещение вируса целиком перед самой программой. После работы вируса программа передвигается в памяти на свои адреса.

Цель основной (рабочей) части нерезидентных вирусов состоит в том, чтобы произвести за один запуск хотя бы одно заражение файла. Способ заражения — это уже детали конкретной реализации вируса, но обычно это приводит к заметному увеличению интервала времени между окончанием загрузки программы и началом её видимой работы. Этот способ накладывает еще меньше ограничений на размер кода вируса, чем у резидентных вирусов, поэтому по желанию разработчиков вредные эффекты могут быть достаточно изощренны. При высоком мастерстве разработчика последствия инфекции могут быть совершенно непредсказуемыми.

3. Общий обзор некоторых АнтиВирусов

Сегодня уже существует определенный набор антивирусных программ. Они делятся на два класса: Детекторы вирусов и Фаги. Детекторы вирусов — это программы, которые лишь обнаруживают вирусы. Фаги — это программы, способные не только обнаружить, но и удалить вирусы. Рассмотрим несколько антивирусных программ разных авторов:

  • Virus Control Program version 2.0 (C) 1989 by I.Vasilyev
    Это программа проверяет загрузочный сектор на зараженность и в случае вируса по желанию пользователя записывает стандартный либо скоростной загрузочный сектор.
  • Speed test (C) by I.Vasilyev
    Проверяет загрузочный сектор аналогично вышеописанной программе, некоторые ячейки памяти и тестируются файлы на FC﹣инфекцию. Вирус из файла не удаляет.
  • Virus Killer version 1.0
    Проверяет загрузочный сектор на два вируса, при обнаружении записывает стандартный загрузочный сектор.
  • Virus Detector version 1.0 (C) 1989 by Vlad
    Проверяет файлы на FC﹣инфекцию. При обнаружении вируса предлагает стереть этот файл с диска. Тест некорректен.
  • Virus Detector versions 1.1, 1.2, 2.1+ (C) 1989, 1990 by MasterSoft
    Проверяет загрузочный сектор на любой вирус загрузочного сектора. Проверяет некоторые ячейки памяти. Файлы проверяются на DOS﹣вирус, KANA﹣вирус и FC﹣инфекцию. Вирусы не вычищает.
  • Virus Detector (C) 1990 by OmegaSoft
    Тестирует MSXDOS.SYS на DOS﹣вирус. Вычищает его из файла.
  • AntiVirus version 2.6 (C) Vesta Soft, PowerSoft
    Проверяет загрузочный сектор на вирус. При нестандартном загрузочном секторе записывает фирменный загрузочный сектор. Тестирует ловушки на любое использование, кроме межслотовых вызовов в ПЗУ. При обнаружении выдаёт нестандартное имя ловушки и первый байт команды. Обнаруживает FC﹣инфекцию, KANA﹣ и MOSCOW﹣вирусы. В версии Vesta Soft авторы пытались удалять вирусы KANA и MOSCOW, но, к сожалению, АнтиВирус зависал, а восстанавливаемая программа портилась.
  • ANTI-virus Utility version 2.0 (C) 1990 by I.Vasilyev
    Оконный АнтиВирус. Проверяет загрузочный сектор, при нестандартном секторе записывает стандартный. Проверяет некоторые ячейки памяти. Достаточно корректно проверяет FC﹣инфекцию и удаляет её из файлов.

Кроме перечисленных АнтиВирусов упомянем такие, как:

но все они являются АнтиВирусами прошлого поколения.

Практически все перечисленные программы тестируют загрузочный сектор некорректно, то есть в загрузочном секторе может быть и не вирус, а тест даст положительный результат. И наоборот при наличии вируса тест неспособен его обнаружить. Кстати надо отметить, что практически все существующие скоростные загрузочные сектора являются некорректными и конфликтуют с программами, перегружающими дисковую операционную систему, например SOS.COM, диски ОЗУ и т.д. Можно сказать, до сегодняшнего дня не было АнтиВирусной программы, удовлетворяющей самым строгим требованиям. Наш AntiVirus﹣Fag создан для заполнения этой бреши в программном обеспечении. Как нам кажется, он сможет удовлетворить требованиям сегодняшнего дня. Итак, перейдем к его описанию.

4. АнтиВирус версии 3.5

4.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тестирование загрузочного сектора
Testing hooksтестирование ловушек
Testing memoryтестирование системной области памяти
Testing DOSтестирование дисковой операционной системы
Testing filesтестирование файлов
That's all…конец работы АнтиВируса

Сообщение «Ok» означает, что тест дал отрицательный результат, то есть нарушений не найдено.

Рассмотрим тесты более детально.

4.2. Тесты

4.2.1. АвтоТест

Данным тестом АнтиВирус проверяет самого себя на заражение любым вирусом. Если таковое было найдено, то программа выдаёт сообщение:

I'm damaged by virus !!!Я разрушен вирусом !!!

после чего предлагается перезаписать незараженный АнтиВирус из памяти:

Rewrite (Yes/No) ?Перезаписать (Да/Нет) ?

В случае ответа 'Y' происходит восстановление программы.

Если вирус, инфицировавший АнтиВирус﹣Фаг, перед тем, как передать управление АнтиВирусу (см. 2.2.2), заразил другую программу, используя метод FCB (например, MOSCOW﹣Virus, KANA﹣Virus, и т.д.), а не, скажем, прямую запись секторов (например, JUST﹣Virus), то АнтиВирус выдаёт сообщение:

Alien used <filename> before my startЧужак пользовался файлом <filename> перед моим запуском

и вы можете посмотреть, какие изменения произошли в этом файле. Возможно, это сообщение поможет Вам обнаружить новый вирус. Кстати, АнтиВирус переименовывать нельзя так, как это чревато ложным срабатыванием АвтоТеста. Поэтому запомните — исходное имя программы AntiVirus Fag v3.5 — AV.COM!

4.2.2. Проверка на защиту от записи

Диск проверяется на защищённость, и если диск защищён, то выдаётся сообщение:

Disk is write protectedДиск защищен от записи

и в дальнейшем будет производится только детектирование вирусов без их удаления. Если установлен ключ игнорирования удаления вирусов, то проверка на защиту от записи не производится. Это может быть применено, если у Вас плохой дисковод и записывать что﹣либо на диск нежелательно.

4.2.3. Тестирование загрузочного сектора

Данный тест читает с диска загрузочный сектор (сектор #0), содержащий в себе программу начальной загрузки и ищет в нем вирус. Если знакомый вирус не найден, то проверяется программа начальной загрузки на содержание в себе команд, которые могут быть расценены, как команды вируса (странные команды). В случае обнаружения вируса программа выдаёт сообщение следующего содержания:

BOOT-VirusВирус в загрузочном секторе

Далее, если Вы не игнорировали удаление, то происходит удаление вируса (заметьте: именно удаление вируса, а не перезапись нового загрузочного сектора ) из загрузочного сектора, сопровождающееся надписью Erase — «Удаление». В случае нахождения в программе начальной загрузки странной команды выводится сообщение:

Strange : +xxxxhСтранность по адресу xxxxh от начала сектора

Если Вы обладаете достаточной квалификацией, Вы можете загрузить загрузочный сектор в отладчик и проанализировать команду, содержащуюся по этому адресу. Однако следует помнить, что Ассемблер — это язык, в котором и операнды команд тоже можно интерпретировать, как команды. Вследствие этого иногда тест может обнаружить такую псевдокоманду и написать сообщение Strange.

Предложим Вам некоторые рекомендации по реагированию на strange. Как правило, strange бывают опасны, если хотя бы один обнаружен в первой половине загрузочного сектора (адрес с 0000h по 00FFh), или два и более — во второй половине (адрес с 0100h по 01FFh). Это объясняется тем, что если strange в первой половине, то это как правило вирус, загружающий рабочую часть с какого﹣либо сектора диска; здесь достаточно одной команды — чтения с диска. Если strange обнаружены во второй половине, то, как правило, это означает, что это вирус, целиком находящийся во второй половине загрузочного сектора и в нем обязательно должно содержаться как минимум две команды общения с диском: чтение и запись. Если же во второй половине обнаружен один strange, то есть все основания предположить, что это не вирус.

Если программа в загрузочном секторе при загрузке не может быть запущена, то выдаётся сообщение:

Unloading BOOTНезагружаемый загрузочный сектор

В случае, если диск не защищен от записи, и не стоит ключа игнорирования записи, после вывода любого из двух последних сообщений, выводится запрос:

Write Standard, Fast or None (S,F,N) ?Записать стандартный, скоростной, или не записывать ничего

В случае ответа на этот запрос: S — записывается стандартный загрузочный сектор; в случае ответа F — записывается фирменный скоростной загрузочный сектор версии 2.06; на ответ же N ничего не записывается и загрузочный сектор остается прежним.

4.2.4. Тестирование ловушек

Как известно, в ПЗУ нельзя ничего записать или изменить и, поэтому, для того, чтобы программы, записанные в ПЗУ можно было расширять и надстраивать, в компьютерах MSX программистам предоставлена возможность использования так называемых ловушек (англ. hook — крючок). В различных местах ПЗУ существуют вызовы подпрограмм в старших адресах ОЗУ. А на месте этих подпрограмм оставлено три или пять байтов, заполненных командами RET (возврат из подпрограммы, код: C9h). Любая программа может заменить эти команды на свои для достижения поставленных целей. Например, ловушки используются дисками ОЗУ, сетевыми операционными системами для подключения драйвера дополнительного диска (драйвер — это программа управления чем﹣либо). Вирусы тоже пользуются этими ловушками, чтобы производить свои вредные эффекты (размножение, порча дискет, искажение информации и т.п.).

Тест ловушек выявляет те ловушки, которые используются программами, находящимися резидентно в ОЗУ и указывающие на подпрограммы, не находящиеся в ядре дисковой операционной системы. То есть как раз те ловушки, на которые следует обратить особое внимание. При обнаружении такой ловушки следует сообщение:

Bad hook : xxxxhПлохая ловушка по адресу xxxxh

Если у Вас хватает знаний, Вы можете исследовать программу, использующую эту ловушку. При соответствующем ключе (/u) тест может выдавать абсолютно все используемые ловушки, при этом выводится фраза, типа:

Using hook : xxxxhИспользуемая ловушка по адресу xxxxh

Вы можете указать ключ (/c), дающий возможность удалить какие﹣либо ловушки, то есть заполнить их командой RET. Пример:

Bad hook : F270h. Erase (Yes/No) ?Удалить ?

если последовал ответ Y, то произойдет удаление и надпись изменится в

Bad hook : F270h. ErasedУдален

если ответ был — N, то удаление производиться не будет.

Одной из возможных целей удаления может быть нейтрализация действия вируса в памяти, например, некоторые вирусы используют ловушку F270h. Однако, удалением следует пользоваться осторожно, так как ловушки используются не только вирусами! Например, некоторые драйвера дисков ОЗУ используют ту же самую ловушку и очищение её в этом случае крайне нежелательно. Для этого в АнтиВирусе предусмотрено автоматическое детектирование и очищение ловушек используемых известными нам вирусами, это особенно будет полезно обыкновенным пользователям. Данная возможность включается по умолчанию и отменяется ключом (/c) — ручное удаление ловушек.

4.2.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Подключен диск ОЗУ
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. Тем самым еще до того, как на Вашем компьютере загрузится MS DOS, вирус получит управление! Но на это следует обращать внимание только тогда, когда вы знаете, что после сброса (RESET) ничего не должно оставаться, так как это может быть и не вирус а, скажем, программа ND, которая тоже остается после перезагрузки.
Invalid VRAM sizeНедействительный размер видеопамяти
Это сообщение указывает на то, что действительный размер видеопамяти и тот, который указан в системных ячейках, не совпадают. Это может быть проявление программы GFI или драйвера какого﹣нибудь диска ОЗУ, но не исключено, что и авторы вирусов могут применить этот способ (изменить размер VRAM).
DANGEROUSE SIZE OF FREE MEMORYОпасный размер свободной памяти это сообщение указывает на то, что верхняя граница системной памяти, отведенной для исполняемых программ расположена ниже 8100h. Так как обычно эта граница используется, как начальное значение указателя стека, то стек может быть заслонен ПЗУ при вызове каких﹣либо функций Yamaha Локальная сеть, версия 3.0 или MSX BASIC, что неизбежно приведет к зависанию.
Different FDD & BASIC HIMEMFDD HIMEM и BASIC HIMEM различны
это означает, что указатели на верхний предел свободной памяти BASIC HIMEM (FC4Ah) и FDD ROM HIMEM (F349h) указывают не на одну и ту же границу. Это может быть вирус, который зарезервировал себе кусок памяти. Но могут быть и некоторые другие программы, которые резервируют себе память перед MSX-DOS или в MSX BASIC, но забывают дублировать эти ячейки. Однако в некоторых случаях эти значения не должны совпадать, тогда это сообщение не выводится.
Wrong DOS HIMEM relativity FDD HIMEMНеправильный адрес DOS HIMEM относительно FDD HIMEM
это означает, что указатель на верхний предел свободной памяти в DOSDOS HIMEM (F34Bh) указывает выше FDD HIMEM (что вообще ошибочно), или одинаков с ним. Это, опять же, может быть или вирус, загрузившийся перед MS DOS или программы, подобные диску ОЗУ.

Следующие три сообщения выводит тест Вызовов 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, то АнтиВирус выдаст вышеприведённое сообщение.

4.2.6. Тестирование дисковой операционной системы

Данный тест предоставляет большие возможности для выявления любых (!) вирусов, контролирующих вызовы BDOS. При обнаружении контроля он выдаёт на экран сообщение:

BDOS is checking!BDOS контролируется!

Например, при запуске программы в отладчике DBG контролируется BDOS. Также BDOS контролируются DOS﹣вирусом (см. 2.2.1), когда он находится в памяти. Сущность этого вируса мы описали выше.

Этот тест достаточно универсален, он ВЫЯВЛЯЕТ ЦЕЛЫЙ КЛАСС ВИРУСОВ. Также при обнаружении в памяти DOS﹣вируса последний удаляется. При этом на экране появляется надпись:

DOS-Virus. ErasedDOS﹣вирус. Удален

Также возможны вирусы, которые изменяют код 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 в свою программу, находящуюся вне 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. Скорее всего, по этому адресу Вы обнаружите вирус.

4.2.7. Тестирование файлов

Этот тест проверяет Ваши файлы на пять вирусов, как то:

  • DOS﹣вирус — его действие описано выше (см. 2.2.1);
  • FC﹣инфекция (Falling Chars) — вирус «Падающие буквы»;
  • KANA﹣вирус — искажение информации, передаваемой на принтер путем увеличения кода каждого символа на единицу;
  • JUST﹣вирус — портит информацию на диске во время своего размножения;
  • MOSCOW﹣вирус — портит код программы перед запуском;

Перед тестированием файлов проверяется тип информации на диске, если он не соответствует стандарту, применяемому на MSX﹣компьютерах, то выводится сообщение:

Unsupported media typeНеподдерживаемый тип информации
Это сообщение также выдаётся, если диск не вставлен в дисковод.

Далее проверяются все SYS﹣ и COM﹣файлы на диске. SYS﹣файлы проверяются на заражение DOS﹣вирусом, а COM﹣файлы – на заражение FC﹣инфекцией, KANA﹣, JUST﹣ и MOSCOW﹣вирусами. При нахождении в файле вируса, на экран выводится сообщение, идентифицирующее вирус и, если код вируса в зараженной программе не испорчен, диск не был защищен от записи и не был установлен ключ игнорирования, то любой из этих вирусов вычищается из файла, и производится повторная проверка файла на случай вложенных вирусов. Также, если размер SYS﹣ или COM﹣файла равен нулю, то выдаётся сообщение:

File is emptyФайл пуст

Если размер COM﹣файла более 64 Кбайт, то выводится сообщение:

File too bigФайл слишком большой

Не будем утруждать читателя описанием вирусов, так как детальное описание может привести к обратным результатам – к распространению других вирусов с подобной структурой (вспомним пример описания Земцовым П.А. и Налимовым Е.В. вируса «НАТАША»).

4.3. Описание интерфейса

Наш АнтиВирус имеет достаточно большой, но легко запоминающийся набор ключей, существенно расширяющих возможности программы. Ключи можно подразделить на основные и составные. Перечислим их:

Основные ключи:

  • /h — подсказка (Help)
    наш АнтиВирус имеет встроенную подсказку, и Вы можете не обращаясь к документации вспомнить ту или иную функцию;
  • /i — не удалять вирусы (Ignore)
    при этом ключе игнорируется удаление вирусов из загрузочного сектора и из файлов, а на экран выводятся только предупреждающие сообщения; также не производится никакой записи на диск (см. 4.2.2);
  • /p — отмена паузы при заполнении экрана (disable Prompt);
  • /k — обязательная перезапись загрузочного сектора (Kill 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);
    • h — тест hook'ов (Hook);
    • m — тест системной области памяти (Memory);
    • d — тест дисковой операционной системы (DOS);
    • f — тест файлов (Files);

Как использовать составные ключи:
Вы указываете ключ распределения /+ либо /-, затем, без каких либо разделителей, указываете идентификатор теста. Примеры:

A>av/+bm
проверить загрузочный сектор на диске в текущем дисководе и проверить системную область памяти
A>av/-bf
проверить только память (без тестов загрузочного сектора и файлов)
A>av/+bhmd

или

A>av/-f
мы обычно пользуемся этой командой, означающей проверку загрузочного сектора и памяти (ловушек, системной области и DOS).

Надо отметить, что если будет указан несуществующий драйвер, то будет проверяться только память, то есть следующие примеры одинаковы по своему действию:

A>av v:

или

A>av/+hmd

или

A>av/-bf

Каждый из Вас может установить с помощью ключей нужную конфигурацию тестов АнтиВируса. И еще, если наш АнтиВирус будет выдавать столько сообщений, что они не будут умещаться на экране, то автоматически выведется сообщение:

Push any key for continueНажмите любую клавишу для продолжения;

Кроме этого Вы можете в любой момент приостановить печать нажатием комбинации CTRL+S, следующее нажатие той же комбинации приводит к печати следующего символа, нажатие других клавиш возобновит нормальную печать.

msx/antivirus/mastersoft.txt · Последние изменения: 2020-12-22 13:49 — GreyWolf