Я отлаживаю программу с помощью 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, так как этообработчик исключений текущих потоков.
Спасибо.