Использование SFTЕще один метод, применяемый вирусописателями в рамках stealth — технологии, основан на корректировке системной таблицы файлов. Открывая файл, операционная система выполняет большое количество различных действий, примерно таких: Таким образом, SFT — это уникальный описатель, своего рода «паспорт», которым операционная система снабжает каждый открываемый файл. Она хранит в этом районе памяти большое количество «рабочей» информации, необходимой для выполнения низкоуровневых операций чтения и записи данных, для перемещения указателей внутри файла и прочего: Получить доступ к SFT можно несколькими способами. Во-первых, старая знакомая функция 52h прерывания 21h возвращает в ES: адрес первой SFT в списке. Используя поле «Next», можно двигаться по списку SFT и искать нужную таблицу, например по имени открытого файла. «Нормализованный» формат имени файла — это формат, используемый, например, файловыми функциями, работающими через FCB, а именно: 8 символов на имя, 3 символа на расширение, а пустые позиции дополняются пробелами. Во-вторых, зная дескриптор открытого файла, можно воспользоваться средствами очень полезного, но крайне слабо документированного прерывания 2Fh. Это прерывание дает доступ к внутренним процедурам ядра MS-DOS. Например, этими процедурами реализуются отдельные «шаги» и элементарные действия, необходимые для выполнения сложных операций MS-DOS типа рассмотренной выше операции открытия файла. Доступ к SFT обеспечивают следующие функции: функция с кодом AX=2120h требует на входе в регистре BX значение дескриптора открытого файла и возвращает в ES:DI номер соответствующей SFT ; функция с кодом AX=2116h требует на входе в регистре BL номер соответствующей DFCB и возвращает в ES:DI адрес этой DFCB. Последовательно применив эти функции, можно получить доступ к интересующей таблице.

Еще интересные статьи :