关于ntdll!ExecuteHandler2中push edx指令的技术疑问
关于ntdll!ExecuteHandler2中
push edx指令的分析 问题背景
在Windows 7环境下使用WinDbg调试ntdll!ExecuteHandler2函数时,对指令775c7199 52 push edx存在疑问:当前执行该指令时edx的值为775c71cd,对应函数内的一段代码,需要明确该指令的含义及设计原因。
相关汇编代码
ntdll!ExecuteHandler2: 775c7193 55 push ebp 775c7194 8bec mov ebp,esp 775c7196 ff750c push dword ptr [ebp+0Ch] 775c7199 52 push edx 775c719a 64ff3500000000 push dword ptr fs:[0] 775c71a1 64892500000000 mov dword ptr fs:[0],esp 775c71a8 ff7514 push dword ptr [ebp+14h] 775c71ab ff7510 push dword ptr [ebp+10h] 775c71ae ff750c push dword ptr [ebp+0Ch] 775c71b1 ff7508 push dword ptr [ebp+8] 775c71b4 8b4d18 mov ecx,dword ptr [ebp+18h] 775c71b7 ffd1 call ecx 775c71b9 648b2500000000 mov esp,dword ptr fs:[0] 775c71c0 648f0500000000 pop dword ptr fs:[0] 775c71c7 8be5 mov esp,ebp 775c71c9 5d pop ebp 775c71ca c21400 ret 14h
调试寄存器及反汇编信息
0:010> t eax=00000000 ebx=00000000 ecx=77e15aed edx=775c71cd esi=00000000 edi=00000000 eip=775c7199 esp=01d1f5e4 ebp=01d1f5e8 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 ntdll!ExecuteHandler2+0x6: 775c7199 52 push edx 0:010> u @edx ntdll!ExecuteHandler2+0x3a: 775c71cd 8b4c2404 mov ecx,dword ptr [esp+4] 775c71d1 f7410406000000 test dword ptr [ecx+4],6 775c71d8 b801000000 mov eax,1 775c71dd 7512 jne ntdll!ExecuteHandler2+0x5e (775c71f1) 775c71df 8b4c2408 mov ecx,dword ptr [esp+8] 775c71e3 8b542410 mov edx,dword ptr [esp+10h] 775c71e7 8b4108 mov eax,dword ptr [ecx+8] 775c71ea 8902 mov dword ptr [edx],eax
指令含义与设计原因
push edx的直接含义edx中存储的775c71cd是ntdll!ExecuteHandler2函数内部的代码地址(偏移+0x3a),这条指令的作用是将该地址压入栈中,作为**结构化异常处理(SEH)**回调函数的入口。SEH链的构建逻辑
紧随其后的push dword ptr fs:[0]和mov dword ptr fs:[0],esp是标准的SEH注册流程:fs:[0]指向当前线程TEB(线程环境块)中的异常链表头- 先将旧的链表头压栈,再把当前栈顶(包含刚压入的回调地址和旧链表头)设为新的链表头,完成异常处理函数的注册。
为什么要这么做
ntdll!ExecuteHandler2是Windows异常处理体系中的核心函数,负责调用用户或系统的异常处理例程。为了保证自身执行过程中出现异常时能被正确处理,函数内部需要注册一个专属的异常回调:775c71cd开始的代码会检查异常记录的标志位(test dword ptr [ecx+4],6),判断异常类型- 根据判断结果执行内存拷贝操作,最后返回
1表示异常已处理,确保异常处理机制本身的健壮性,避免因自身异常导致整个系统崩溃。
内容的提问来源于stack exchange,提问作者learn99
相关产品推荐
相关产品推荐

