Физический адрес таблицы IDT

После исполнения инструкции sidt, 32-разрядный физический адрес таблицы IDT выталкивается со стека в регистр ebx и используется как базовый адрес для вычисления элемента таблицы IDT, который подлежит модификации. В листинге 12.3 показано, что для ссылки на элемент таблицы IDT, подле­жащий модификации, используется константа HookExceptionNumber. В ИСХОД­НОМ коде вируса CIH 1.5 мы также видим, что при ассемблировании констан­та HookExceptiohNumber будет заменена значением 4 или 6. Элемент 4 таблицы IDT соответствует исключению переполнения а элемент недействительного кода операции. Но в первона­чальных исполняемых файлах вируса ни одно из этих значений никогда не использовалось. Вместо них использовалось значение 3, соответствующее исключению контрольной точки. Модификация эле мента 3 таблицы IDT имела свои преимущества, так как это сбивало с толкУ отладчики, таким образом усложняя для разработчиков антивирусов анализа кода вируса CIH. В листинге 12.4 показан фрагмент дизассемблиро­ванного кода вируса CIH, номер сборки 2690, в котором для перехода в ре — л — процедуре обработчика исключе­ния. Эта процедура обозначена меткой MyExceptionHook. Переход к этой про­цедуре обработчика исключения и ее содержимое показаны вызывает исключение с помощью инструкции int, управление передается к метке MyExceptionHook. Во время испол­нения этого перехода, контекст исполнения кода переключается из пользо­вательского режима в режим ядра. Поэтому к моменту прибытия к метке MyExceptionHook код вируса уже исполняется в режиме ядра. Это означает, что вирус в данный момент полностью контролирует систему. В этот момент флаг признака нуля не установлен, и отладочные регистры все еще содержат значения по умолчанию.



Рубрика: Женский интерес

Комментарии закрыты.