Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wbudowane asm przypisywanie do "FS:0" : program obsługi nie został zarejestrowany jako bezpieczny program obsługi
Funkcja modyfikując wartość fs:0, aby dodać nową procedurę obsługi wyjątków, może nie działać z bezpiecznymi wyjątkami, ponieważ program obsługi może nie być zarejestrowany jako prawidłowa procedura obsługi wyjątków (zobacz /SAFESEH).
Aby rozwiązać ten problem, usuń definicję FS:0 lub wyłącz to ostrzeżenie i użyj polecenia . SAFESEH w celu określenia bezpiecznych procedur obsługi wyjątków.
Poniższy przykład generuje C4733:
// C4733.cpp
// compile with: /W1 /c
// processor: x86
#include "stdlib.h"
#include "stdio.h"
void my_handler()
{
printf("Hello from my_handler\n");
exit(1);
}
int main()
{
_asm {
push my_handler
mov eax, DWORD PTR fs:0
push eax
mov DWORD PTR fs:0, esp // C4733
}
*(int*)0 = 0;
}