Как правильно написать SEH-обработчик на ассемблере под win32?
Прошу прощения: вероятно, был невнимателен при прочтении материалов, или материалы были не те (уже и не упомню).
Нашёл документацию, где выяснилось, что контекст потока передаётся в SEH-обработчик не вторым, а третьим параметром. Поправил код, и оно заработало как часы.
К чему искать проблем с исключениями, если способ через PEB работает от Win2k до Win10?mov eax, fs:[18]
mov eax, [eax+30h]
mov eax, [eax+0ch]
mov eax, [eax+0ch]
Так находится структура описывающая основный .exe файл.
+0h Next
+18h HANDLE
+24h UNICODE_STRING FullFileName
+2Ch UNICODE_STRING ShortName
Через Next можно перечислить все загруженные модули, следующим после .exe файла гарантировано будет ntdll. От вас требуется только написание stricmp для структур UNICODE_STRING, ну или импортировать RtlEqualUnicodeString из ntdll.