问题一是:
EXCEPTION_POINTERS结构是顶层异常处理回调函数(筛选器回调函数)的参数,但此结构不是线程异常处理回调函数的参数(它的参数有四个,包括了EXCEPTION_POINTERS结构的两个参数),为什么在线程异常处理过程中,发生异常后,也总是先到EXCEPTION_POINTERS结构???
求助二:
先把实例SHE2的代码弄上来,自己把它分成了3节
以下的第一节是原程序代码,构造了一个ERR结构,并发生了访问内存异常:
00401000 >/$ 68 51104000 push 00401051
00401005 |. 64:FF35 00000>push dword ptr fs:[0]
0040100C |. 64:8925 00000>mov dword ptr fs:[0], esp
00401013 |. BE 00000000 mov esi, 0
00401018 |. 8B06 mov eax, dword ptr [esi]
以下这一节是SHE回调函数处理后程序又重新执行的地方,重新执行地址为0040102D
0040101A |. 6A 00 push 0
0040101C |. 68 00304000 push 00403000
00401021 |. 68 0F304000 push 0040300F
00401026 |. 6A 00 push 0
00401028 |. E8 57000000 call <jmp.&USER32.MessageBoxA>
0040102D |. 6A 00 push 0
0040102F |. 68 00304000 push 00403000
00401034 |. 68 04304000 push 00403004
00401039 |. 6A 00 push 0
0040103B |. E8 44000000 call <jmp.&USER32.MessageBoxA>
00401040 |. 64:8F05 00000>pop dword ptr fs:[0]
00401047 |. 83C4 04 add esp, 4
0040104A |. 6A 00 push 0 ; /ExitCode = 0
0040104C \. E8 39000000 call <jmp.&KERNEL32.ExitProcess> ;
以下是SHE回调函数:
00401051 /$ 55 push ebp ; 结构异常处理程序
00401052 |. 8BEC mov ebp, esp
00401054 |. 53 push ebx
00401055 |. 8B45 10 mov eax, dword ptr [ebp+10] ;EAX此时即CONTEX
指针
00401058 |. 8D1D 2D104000 lea ebx, dword ptr [40102D]
0040105E |. 8998 B8000000 mov dword ptr [eax+B8], ebx
00401064 |. 33DB xor ebx, ebx
00401066 |. 8958 04 mov dword ptr [eax+4], ebx
00401069 |. 8958 08 mov dword ptr [eax+8], ebx
0040106C |. 8958 0C mov dword ptr [eax+C], ebx
0040106F |. 8958 10 mov dword ptr [eax+10], ebx
00401072 |. C740 18 55010>mov dword ptr [eax+18], 155
00401079 |. B8 00000000 mov eax, 0
0040107E |. 5B pop ebx
0040107F |. C9 leave
00401080 \. C2 1000 ret 10
我先用OD单步执行到00401018后,用F7进入了异常刚发生时的系统代码处,EXCEPTION_POINTERS结构在栈顶,结构如下:
0012FCCC 0012FCD4 ;指向EXCEPTION_RECORD
0012FCD0 0012FCF0 ;指向CONTEXT
继续向下执行,一直执行到:
00401055 |. 8B45 10 mov eax, dword ptr [ebp+10] ;EAX此时即CONTEX
指针
看寄存器EAX确实是0012FCF0,是指向CONTEX,问题二是:
为什么[ebp+10]就是指向CONTEX的呢???
(已在数据窗口跟踪过一遍,EBP是0012FC0C,EBP+10是0012FC1C,[0012FC1C]就是0012FCF0)
我的意思是[ebp+10]指向CONTEX的机理是什么?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!