Энциклопедия компьютерных вирусов

         

Обработчик INT 21h


Вирус перехватывает 18 функций INT 21h:

3Dh, 6Ch - Open/Create File 3Eh - Close File 3Fh - Read File 42h - Lseek 4Bh - Execute File 41h - Delete File 11h, 12h - FindFist/Next FCB 4Eh, 4Fh - FindFist/Next ASCII 00h, 4Ch - Terminate 31h - Stay TSR 67h - Set Handle Count 48h, 49h, 4Ah - Allocate/Free/Resize Memory

Функции Set Handle Count, Execute File и Allocate/Free/Resize Mem используются вирусом для того, чтобы спрятать свой блок памяти. Вирус корректирует MCB-блоки: "показывает" свой код непосредственно перед вызовом функции и "сращивает" его с предыдущим блоком после вызова. В результате блок памяти с кодом вируса виден только DOSом, а утилиты просмотра системной памяти не видят его. При вызовах функций Terminate, Stay TSR и FreeMem вирус перемещает себя по другому адресу в памяти. При этом вирус копирует себя либо "поближе" к программам DOS или в UMB. При открытии файлов вирус выполняет несколько действий в зависимости от режима открытия файла (ReadOnly или ReadWrite). Если на запись открывается зараженый файл, то вирус лечит его. Перед лечением вирус проверяет имя программы, которая открывает файл, и не лечит файл, если имя программы: UUENCODE.EXE, PKLITE.EXE, LZEXE.EXE, NDD.EXE, DIET.EXE, AFD.EXE, SD.EXE, SPEEDDSK.EXE, DEFRAG.EXE, TLINK.EXE, LINK.EXE При открытии в режиме ReadOnly вирус выполняет действия, которые выглядят как модификация кода какого-то антивируса: вирус проверяет код, откуда идет вызов на открытие, и каким-то образом корректирует его. К счастью, в вирусе в этом месте ошибка, и данная процедура не получает управление. При открытии файлов также получает управление стелс-подпрограмма, которая уменьшает длину файла в System File Table. При чтении из файлов, при вызове команд LSeek, FindFirst/Next и перед уничтожением файлов вирус также вызывает стелс-подпрограмму, которая либо подставляет незараженный код файла, либо блокирует LSeek на код вируса, либо уменьшает длины зараженных файлов, либо лечит удаляемый файл в соответствии с вызванной функцией. Вызовы FindFist/Next ASCII также используются вирусом для поиска файлов и их последующего заражения. Вирус сохраняет имя файла, который обнаружен командой FindFirst, и имя примерно каждого 5-го файла (с вероятностью 3/16) при вызовах FindNext. Вирус сохраняет только одно имя, поэтому заражаетсся последний файл, имя которого попадает в буфер. Заражение файла, имя которого попало в буфер, происходит при закрытии файла (этого или любого другого). Вирус с вероятностью 1/4 также заражает сам закрываемый файл.



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