1 #include <windows.h> 2 #include <stdio.h> 3 4 5 int g_i = 0; 6 7 LONG NTAPI VEHCallback(EXCEPTION_POINTERS* p) 8 { 9 p->ContextRecord->Eax = (DWORD)&g_i; 10 printf("VEHCallback函数\n"); 11 return EXCEPTION_CONTINUE_EXECUTION; 12 } 13 14 LONG NTAPI VCHCallback(EXCEPTION_POINTERS* p) 15 { 16 p->ContextRecord->Eax = (DWORD)&g_i; 17 printf("VCHCallback函数\n"); 18 return EXCEPTION_CONTINUE_EXECUTION; 19 } 20 21 int main() 22 { 23 AddVectoredExceptionHandler(0, VEHCallback); 24 AddVectoredContinueHandler(0, VCHCallback); 25 26 __try 27 { 28 _asm mov eax, 0; 29 _asm mov[eax], 0; 30 printf("安全渡过异常!\n"); 31 } 32 __except (EXCEPTION_EXECUTE_HANDLER) 33 { 34 printf("进入了异常处理!\n"); 35 } 36 37 system("pause"); 38 return 0; 39 }