Здравствуйте, понадобилось перехватить функцию KeGetCurrentIrql в win 7 32-bit sp0, для этого я патчу таблицу импорта ядра, подменяя адрес функции на адрес своего обработчика. Обработчик лежит в странице памяти с заголовком ядра (ядру на него пофиг). Но при патче система сразу уходит в ребут, я не вижу ни синего экрана, ни собщений об ошибке, сразу экран биос. Это срабатывает какая либо защита ядра? тогда как ее выключить? может нужно использовать какие либо другие методы перехвата? сразу отмечу что перехват всех вызовов мне не нужен. Из методов я еще знаю патч таблицы экспорта hal.dll (он экспортирует эту функцию) и патч самой функции (первые 5 байт заменить на jmp). Код работать должен и в xp и в семерке, поэтому 3 вариант мне не очень нравиться тем, что код функции может различаться в этих системах. Код обработчика рабочий и проверен в xp и vista.
shchetinin снимаю, сам то код в ядре лежит, а вот на патч таблицы он отзывается перезагрузкой Код (Text): mov edx, KeGetCurrentIrql call edx ret
drem1lin Не богоугодно, если вам так нравится. Для нас в таком случае бог - антируткит и всё не богоугодное выносится одним нажатием кнопки.