Интерфейс GENERIC IOCTL
Еще одно средство, которое может быть использовано вирусами для внесение изменений в файловую систему, это интерфейс общего управления вводом/выводом GENERIC IOCTL.
Этот интерфейс реализован в рамках функции 44h прерывания INT21h (операция с кодом 0Dh), которая обеспечивает механизм взаимодействия между прикладным программным обеспечением и драйверами блочных устройств.
Указанная функция позволяет программам (и вирусам) читать и изменять параметры устройств, выполнять чтение, запись, форматирование и проверку дорожек диска на низком уровне с помощью драйвера устройства.
При вызове функции регистры процессора загружаются следующим образом:
Регистр | Описание содержимого | ||
AH
| 44h | ||
AL | 0Dh | ||
BL | Номер устройства НМД или НГМД | ||
CH | Код категории устройства: 08h - дисковое устройство | ||
CL | Операция:
40h - установить параметры устройства; 60h - получить параметры устройства; 41h - записать дорожку; 61h - прочитать дорожку; 42h - форматировать дорожку; 62h - проверить дорожку | ||
DS:DX | Указатель на блок параметров |
Через регистры DS:DX функции передается адрес подготовленного блока параметров, формат которого зависит от выполняемой операции. Из приведенного выше описания видно, что набор выполняемых функцией операций более чем достаточен для того чтобы с его помощью вирусы могли сделать любые изменения логических структур файловой системы.