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 }