IDT перехват прерываний. Что в стеке?

Тема в разделе "WASM.NT.KERNEL", создана пользователем Aids, 9 июл 2011.

  1. Aids

    Aids New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2007
    Сообщения:
    275
    Программа перехватывает прерывания int 3 и int 2. ставит свой обработчик. Меня интересует что передаётся в стеке когда прерывание произошло. И как можно отлаживать это. Я ставлю аппаратный бряк но остановки почему то не происходит. Что можно мочитать по этом. А то даже не знаю какие ключевые слова в поиск вводить
     
  2. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    IRET-фрейм передаётся. Сохраняется среда, при смене CPL сохраняется транзитный стек(Ss:Esp), V86 контекст(если мод соответствующий) и состояние(Cs:Eip и EFlags): Eip - Cs - EFlags - Esp - Ss.

    Intel® 64 and IA-32 Architectures Software Developer’s Manual v.3A, 5.12.1
     
  3. Aids

    Aids New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2007
    Сообщения:
    275
    klzlk
    Спасибо
     
  4. x9090

    x9090 New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2011
    Сообщения:
    1
    Aids
    Я понимаю, как это стек выглядит в обработчик исключения, но как вы отладки обработчика INT 1?

    Я всегда сталкиваются BSOD при установке точки останова (б.п. или BA) на функцию обработчика

    спасибо!
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Aids
    Состояние стека зависит от типа прерывания, а также зависит от того выполняется процесс vm86 или нет (очень противная бяка) . Читай 5 главу 3 тома руководства программиста от Intel.

    Бряк на обработчик вы не поставите. Так как при входе в обработчик прерывания маскируются, за исключением NMI.

    Но если пропатчить обработчик прерывания и демаскировать прерывания, то можно будет отлаживать прерывания. Правда чем это закончится ...