Метод трассировки прерыванияЭтот красивый и важный метод основан на использовании механизма «отладочного» прерывания. Дело в том, что если в регистре флагов процессора установлен в единицу бит TF, то после выполнения каждой очередной команды будет возбуждаться прерывание с номером 1 . При вызове этого прерывания бит TF сбрасывается, и процедура обработки прерывания работает в «обычном» режиме. После выполнения команды «IRET» из стека извлекается вместе с адресом очередной выполненной команды старое значение регистра флагов, и трассировка продолжается. Этот механизм очень удобен для организации «пошагового» выполнения программ и используется, например, в отладчиках. На обработчик «отладочного» прерывания можно возложить задачу отслеживания адреса текущей исполняемой команды. Вот как знаменитый вирус Yankee.2C испльзовал возможности этого механизма для поиска «истинного» адреса обработчика прерывания 21h.

Шаг 1. Сначала вирус перехватывал «отладочное» прерывание.

Анализируя вышеприведенный фрагмент, несложно прийти к выводу, что вирус Yankee.2C обнаруживал в лучшем случае лишь адрес «переходника», располагающегося в нижних адресах памяти. Для того чтобы проникнуть в ядро глубже, обработчик «отладочного» прерывания должен быть более «интеллектуальным». Более поздние вирусы, например PM. Wanderer, пытались анализировать структуру «переходника» — искали где-то в его «окрестностях» точки входа в команду «JMP» и переходили на указанный в ней адрес. Вероятно, возможен и еще более «продвинутый» алгоритм, который проникал бы еще дальше и доходил бы до «развилок» стандартного обработчика прерывания 21h.

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