VEHAndVCH

 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 }
View Code

 

posted @ 2017-08-08 18:54  Spobt  阅读(109)  评论(0编辑  收藏  举报