Собственно вопрос: Подскажите рецепт, как реализовать подобное... или что почитать. Интересует загрузка драйвера и его отладка, установка бряков. спасибо
А собственно в чем проблема? Ставишь бряки либо CC, либо аппаратные (DRx в контексте нужного потока), ставишь свои обработчики INT 1 / INT 3 в IDT. Обрабатываешь приход 1 и 3 прерываний, соответственно 1 приходит при аппаратном бряке, 3 при программном. Трейс реализуется установкой в контексте нужного потока флага TF (Trace Flag) и обработкой опять же прерывания int 1, которое будет вызвано после выполнения 1 инструкции. Т.к. флаг TF сбрасывается после выполнения инструкции, то в нем нужно будет снова установить в сохраненных в стеке флагах флаг TF, если нужна дальнейшая трассировка, либо оставиьт как есть, если трассировку нужно завершить. Что еще нужно-то?
Ну я говорю. Записываешь в нужное место байт 0xCC (int3), сохраняя старое значение. Когда управление дойдет, сгенерится прерывание 3, которое ты должен заблаговременно перехватить. Потом байт восстанавливаешь. Аппаратный бряк - ставишь нужным образом регистры DRx у потока. Когда линейный адрес совпадет с значением одного из адресных отладочных регистров, сгенерится прерывание 1. Его ты тоже должен обработать. Или ставить флаг TF в контексте нужного потока. Про это все я уже сказал. Какие конкретные вопросы будут?