Жизнь после BSOD

         

>>> Врезка исключение и наказание


Всегда ли помогает "шунтирование" 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



Содержание раздела