довести исключение до ZwRaiseException

Тема в разделе "WASM.WIN32", создана пользователем cresta, 3 май 2006.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Есть такая ситуация:

    прога и драйвер работают в паре.

    Прога периодически провоцирует исключения. Как довести исключение до ZwRaiseException, чтобы там драйвер перехватил управление, сделал кое-что и вернул управление проге?

    И вообще, возможно ли это?

    С условием не вызывать RaiseException, а чтобы это происходило например по xor eax,eax mov eax,[eax]
     
  2. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    А не лучше перехват KiUserExceptionDispatcher в ntdll.dll, как в Soft-ice? Прога ведь дружит с драйвером в твоём случае. Ведь не факт что без RaiseException получится. Код NtRaiseException (ты наверное его видел):

    B8B5000000 mov eax, 000000B5

    BA0003FE7F mov edx, 7FFE0300

    FF12 call dword ptr [edx]

    C20C00 ret 000C

    И как всегда по тому адресу:

    mov edx, esp

    sysenter (для XP).

    Так что твоя задача возможно неразрешима.
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Вообще-то исключение должно проходить через кернел, вот только какими путями оно там ходит - неясно.

    А патчить юзер-модную dll из драйвера мне кажется (может и я не прав) нехорошо.