>>> Врезка исключение и наказание
Всегда ли помогает "шунтирование" KeBugCheckEx? Насколько это безопасно? Это очень, очень опасно и помогает далеко не всегда. Вот, например, рассмотрим следующий пример кода, позаимствованный из ядра:
00565201 call ExAllocatePoolWithTag ; выделение памяти из лужи
00565206 cmp eax, ebx ; проверка успешности выделения памяти
00565208 mov ds:dword_56BA84, eax
0056520D jnz short loc_56521C ; -> нам дали память! живем, мужики!
0056520F push ebx ; \
00565210 push ebx ; +
00565211 push 6 ; +- с памятью вышел облом
00565213 push 5 ; +- отправляемся на небеса
00565215 push 67h ; +
00565217 call KeBugCheckEx ; /
0056521C loc_56521C: ; CODE XREF: sub_5651C1+4Cj
0056521C lea eax, [ebp+var_C] ; продолжаем нормальное выполнение
0056521F push ebx
00565220 push eax