Резидентные вирусы     
DOS предусматривает единственный способ создания резидентных (TSR) модулей (помимо драйверов, указываемых в CONFIG.SYS) - при помощи функции KEEP (INT 21h, AH=31h или INT 27h). Многие файловые вирусы для маскировки своего распространения используют другой способ - обрабатывая системные области, управляющие распределением памяти (MCB), выделяют для себя свободный участок памяти, помечают его как занятый и переписывают туда свою копию. Некоторые вирусы внедряют свои TSR-копии в свободные участки памяти в таблице векторов прерываний, в рабочие области DOS, в память, отведенную под системные буферы, в блоки памяти UMB, EMS и XMS.
    Известны два способа проверки резидентным вирусом наличия своей копии в памяти компьютера. Первый заключается в том, что вирус вводит новую функцию некоторого прерывания, действие которой заключается в возврате значения "я здесь". При старте вирус обращается к ней, и, если возвращенное значение совпадает со значением "я здесь", то память компьютера уже заражена и повторное заражение не производится. При проверке вторым способом вирус просто сканирует память компьютера. Оба способа могут в той или иной мере сочетаться друг с другом. При инфицировании оперативной памяти вирус ищет свободное место в памяти и записывает туда свою копию. Затем вирус переопределяет одно или несколько прерываний, необходимых ему для поиска заражаемых файлов, для выполнения деструктивных действий или звуковых и видеоэффектов.
    При инфицировании файлов нерезидентные и некоторые резидентные вирусы ищут на диске (дисках) эти файлы при помощи функций DOS FindFirst и FindNext (INT 21h, AH=11h,12h,4Eh,4Fh). Резидентные вирусы используют более широкий список функций DOS, при обращении к которым происходит заражение файла. Фактически в этом списке присутствуют все функции, по значениям входных или выходных параметров которых можно определить имя файла, к которому идет обращение (к таким параметрам относятся значения соответствующих регистров или областей памяти). В результате к "вирусоопасным" функциям прерывания 21h относятся функции выполнения (EXEC, AX=4B00), загрузки в память (AH=4Bh), поиска (FindFirst и FindNext, AH=11h,12h,4Eh,4Fh) создания (Create, AH=3Ch), открытия (Open, AH=3Dh), закрытия (Close, AH=3Eh), изменения атрибутов (ChMode, AH=43h), переименования (Rename, AH=56h), и некоторые другие функции работы с файлами.

Назад
Hosted by uCoz