169 похожих чатов

Здравствуйте, поясните пожалуйста момент по поводу SEH в win64, читаю

мануалы и вижу, что в новой интерации они стали статическими и все описаны в секции .pdata структурами
struct IMAGE_RUNTIME_FUNCTION_ENTRY
BeginAddress dd 0 ;// RVA-адрес начала блока
EndAddress dd 0 ;// RVA-адрес конца блока
UnwindInfoAddress dd 0 ;// RVA-линк на дочернюю структуру "UNWIND_INFO"
ends
вопрос, как тогда работает SetUnhandledExceptionFilter ?
на мсдн к ней написано следующее -
Issuing SetUnhandledExceptionFilter replaces the existing top-level exception filter for all existing and all future threads in the calling process.
The exception handler specified by lpTopLevelExceptionFilter is executed in the context of the thread that caused the fault. This can affect the exception handler's ability to recover from certain exceptions, such as an invalid stack.

Тоесть получается, обработчик который мы указываем в ней, будет выполнять до всех остальных обработчиков указанных в .pdata ?
и что самое главное, каков примерный хотя бы механизм действия этой апи, ведь вроде как фильтры статически должны быть прописаны в .pdata, как она устанавливает переданную функу в качетсве главной для обработки исключений, можно ли добраться ручками до этого механизма из режима юзера через TEB как-нибудь в контексте ассемблера естественно?

3 ответов

12 просмотров

UnhandledExceptionFilter — это последний, а не первый.

philip-kirkorov Автор вопроса
s54820
UnhandledExceptionFilter — это последний, а не пер...

ну то есть сначало обработчик исключений опросит все функции из .pdata и в конце, если никто не возьмет на себя обработку, передаст тому, что мы устанавливаем ?

philip kirkorov
ну то есть сначало обработчик исключений опросит в...

По идее да. Там ещё есть AddVectoredExceptionHandler. Если хочется ловить что-то, то лучше смотреть туда.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта