Анализ проблем верификации драйверов Windows - page 5

Анализ проблем верификации драйверов Windows
5
STACK_TEXT (рис. 2), можно определить, что вызван драйвер Pri-
mer+0x557, затем прошла верификация захвата спин-блокировки, по-
сле этого система диагностировала исключение при повышенном
уровне приоритета и драйвер nt+0xcb270 вызвал крах системы. Оче-
видно, что в данном случае определить причину краха легко, так как
функция, вызывающая крах, известна.
Рис. 2.
Аварийный дамп, полученный при крахе системы
Для исключения подобных ситуаций необходимо выявить драй-
вер, выполняющий ошибочное чтение, инициировав специальный
режим Driver Verifier, при котором драйверы используют специаль-
ный пул во всех случаях, когда требуется дополнительное выделение
памяти. Существует способ определить конкретный участок кода, в
котором произошел сбой из-за несоответствия приоритетов IRQL.
При постановке драйвера на верификацию диспетчер Driver Verifier
самостоятельно организует крах системы. Функция KeBugCheckEx()
вернет ошибку DRIVER_VERIFIER_DETECTED_VIOLATION и по-
местит в дамп максимум информации об ошибке (рис. 3).
Место локализации ошибки указывается с точностью до строки
кода, однако не следует забывать причину возникновения краха си-
стемы — невозможность генерации исключений на высоком уровне
приоритетов IRQL.
1,2,3,4 6,7,8,9,10,11,12
Powered by FlippingBook