Strange


Резидентный загрузочный вирус. Занимает четыре сектора (три сектора - тело вируса, один сектор - старый загрузочный сектор или MBR). На жестком диске записывает старый MBR и свое продолжение начиная с 17 сектора первого трека, на гибких дисках использует для этого последние четыре сектора диска. При загрузке системы вирус размещается в область верхних адресов оперативной памяти, уменьшая значение по адресу 0000:0413 на 3 и перехватывает INT 8. При появлении обработчика прерывания INT 2Ah (вектор по адресу 0000:00A8h не равен 0000:0000) восстанавливает INT 8 и перехватывает INT 21h. При загрузке COMMAND.COM увеличивает длину области драйверов и копирует свое тело в эту область. При этом восстанавливается старое значение INT 21h и перехватываются INT 9 и INT 13h. Область памяти, занимаемая ранее вирусом, освобождается: значение по адресу 0000:0413 увеличивается на 3, величина последнего MZ-блока увеличивается на 3K. Если копирование вируса в область драйверов невозможна, вирус выводит фразу:

Hmm... Strange drivers you have, very strange... ;-)

При обработке INT 13h вирус проверяет наличие трассировки. Для этого он запрещает аппаратные прерывания (команда CLI), заталкивает в стек регистр AX, выталкивает его и сравнивает содержимое стека со значением регистра. Если эти значения не совпадают, вирус возвращает код ошибки "disk write-protect" независимо от функции. По-видимому, подразумевалась передача управления дальше, чтобы произошла запись случайного сектора, но в вирусе стоит RET FAR. Вирус перехватывает INT 9 (клавиатура) и дублирует одну случайно выбранную клавишу. Помимо этого если при записи секторов через прерывание INT 13h первые два байта - 'MZ', то вирус заменяет их на 'ZM'. Кроме прерываний INT 9 и INT 13h, которые вирус использует по "прямому" вирусному назначению (эффекты на клавиатуре и заражение дисков), вирус перехватывает еще одно из аппаратных прерываний - либо INT 0Dh, либо INT 76h. Эти прерывания соответствуют аппаратному запросу компьютера - hardware interrupt request (IRQ).

Содержание раздела