Таким образом, код вируса CIH вызывает функцию ядра jPageAllocate, чтобы выделить системную память для нужд вируса. Так как на данном этапе код вируса исполняется в режиме ядра, он может вызывать функции ядра напрямую. После выделения системной памяти, посредством инструкции iretd ход исполнения вируса CIH возвращается к точке в коде, следующей сразу же за инструкцией int, которая вызвала данное исключение. Это точка, следующая сразу же за комментарием «Соединяем все секции кода вируса». Во время исполнения этого перехода, контекст исполнения кода также переключается из режима ядра в пользовательский режим. Строки кода, следующие сразу же после первого исключения, копируют код вируса в выделенную системную память, а затем устанавливают флаг признака нуля. После этого вирус вызывает такое же исключение, как и раньше. Но, в отличие от предыдущего исключения, на этот раз флаг признака нуля уже установлен. Поэтому ход исполнения вируса переходит к метке MyExceptionHook и устанавливает перехватчик интерфейса файловой системы. Этот процесс показан Возможно, несмотря на все объяснения, данные в листинге 12.6, понимание хода исполнения вируса вам все еще не до конца ясно. В этом нет ничего удивительного так как вирусописатели умышленно делают код своих творений сложным и запутанным. Поэтому рассмотрим блок-схему, отражающую ход исполнения вируса. Метки и функции из кода в листинге 12.6 представлены здесь как логические блоки, работа которых объясняется комментариями.
Рубрика: Женский интерес