Я отлаживаю программу с помощью Olly Debugger. Он устанавливает обработчик исключений при выполнении следующим образом:
push 004010a9
xor eax, eax
push dword ptr fs:[eax]
mov dword ptr fs:[eax], esp
Итак, обработчик исключений, расположенный по адресу 004010a9, установлен.
Следующая инструкция вызывает нарушение доступа к памяти, как показано ниже:
add eax, 40
sub dword ptr ds:[00410000], eax
Поскольку код не имеет прав на запись в раздел кода, он вызывает нарушение доступа к памяти и останавливается.
Теперь у меня есть возможность передать исключение программе, нажав Shift + F9.
Однако, когда я нажимаю, ничего не происходит, и программы остаются в состоянии паузы.
Моя цепочка SEH на данный момент выглядит так, как показано ниже:
004010a9 // exception handler installed above
7c839aa8 // final exception handler
Мои параметры отладки в Olly Debugger установлены, как показано ниже:
На вкладке «Исключение» у меня отмечен только следующий параметр:
Игнорировать нарушения доступа к памяти в Kernel32
Я не могу понять, почему программа не передает исключение обработчику исключений, расположенному по адресу 004010a9, когда я нажимаю Shift + F9, поскольку это обработчик исключений текущего потока.
Спасибо.