程序初始化,包含 SEH 保存 handler 指针的操作,展示 SEH 在内存中的基本结构。

程序的入口地址 DWORD AddressOfEntryPoint 11EB。

004011EB     55                    push ebp                       ; ebp 存至 esp 0018FF8C 所指的位置,ESP - 4
004011EC     8BEC                  mov ebp,esp                    ; esp 存至 ebp
004011EE     6A FF                 push -1                        ; -1 存至栈顶 esp
004011F0     68 B8604000           push CrackMe1.004060B8         ; rdata 部分,地址所指区域作用未知
004011F5     68 0C294000           push CrackMe1.0040290C         ; text 部分,EXCEPTION HANDLER
004011FA     64:A1 00000000        mov eax,dword ptr fs:[0]       ; fs 7EFDD000,值 0018FFC4,指向 SEH chain 尾部(值 FFFFFF),dword ptr,取指针指向的 32 位值(一般为指针)
00401200     50                    push eax
00401201     64:8925 00000000      mov dword ptr fs:[0],esp       ; 当前 esp 存入 fs 指向

程序开始是有 fs:[0] 指向 0018FFC4。

执行到最后,

7EFDD000 这个地址指向的是一个结构,第一个指针指向的是下一个 SEH 结构,第二个指针则指向处理函数。


  • No labels