Обработчик исключений в r0

Тема в разделе "WASM.BEGINNERS", создана пользователем Np50, 23 июл 2008.

  1. Np50

    Np50 New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2008
    Сообщения:
    2
    Всем привет!
    Подскажите, где в ядре находится обработчик необрабатываемых исключений...
    os=win_xp
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    В смысле, обработчик #DF? Восьмой обработчик в IDT. Базу IDT можно получить с помощью sidt. Размер дескриптора -- 8 байт. Значит, База_IDT + 64 == дескриптор восьмого прерывания. Из дескриптора извлекается селектор и смещение обработчика.

    Или я что-то недопонял?
     
  3. Np50

    Np50 New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2008
    Сообщения:
    2
    Mika0x65
    Имеется ввиду обработчик виндовых исключений, к примеру KMOD_EXCEPTION_NOT_HANDLED (0x1E)

    Они вообще програмные? или срабатывают на основе аппаратных исключений?

    Кстати, а что проц должен генерировать при mov eax,[eax] (eax is 0) ? #GP ?
     
  4. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Обработчик необработанных исключений(если так можно выразится..) вектора [30%EB] - условно эта точка называется KiUnexpectedInterruptTail, в шлюзах ссылки на KiAfterUnexpectedRange:
    Код (Text):
    1. Int_0FEh:
    2.     push 0FEh
    3.     jmp short KiAfterUnexpectedRange
    4. Int_0FFh:
    5.     push 0FFh
    6.     jmp short KiAfterUnexpectedRange
    7. KiAfterUnexpectedRange:
    8.     jmp dword ptr [KiUnexpectedInterruptTail]
    9. KiUnexpectedInterruptTail:
    10.     PVOID offset _KiUnexpectedInterruptTail
    В ntoskrnl это просто ищется. Если я правильно понял вопрос, сонный уже..
    [Аа это прерываний, не так понял извеняюсь. Эта ошибка вызывается из нескольких прерваний, например #GP(General Protection) как KeBugCheckEx() с кодом ошибки который вы привели.]