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 ответов

8 просмотров

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

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

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

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

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта