利用反汇编对WNDPROC进行追踪

来源:互联网 发布:上海音协网络考级 编辑:程序博客网 时间:2024/06/05 08:56

很简单的一个WINDOWS程序,就是简单的创建窗口,消息循环。。。

目的:wndproc 窗口消息处理程序 什么时候执行的 反汇编如何追踪

首先在WNDPROC 那下断点

反汇编追踪 到registerclassA的时候还未跳到wndproc (追踪wndproc执行的时候会跳至user32领空)

0040115A |. FF15 B8A34200 call dword ptr [<&USER32.CreateWindow>;\CreateWindowExA

这里直接F8会到wndproc

在createwindowEXA的时候会跳到wndproc,F7跳到user32领空

77D2E4AE 68 01000040 push 4000000177D2E4B3 FF75 34 push dword ptr [ebp+34]77D2E4B6 FF75 30 push dword ptr [ebp+30]77D2E4B9 FF75 2C push dword ptr [ebp+2C]77D2E4BC FF75 28 push dword ptr [ebp+28]77D2E4BF FF75 24 push dword ptr [ebp+24]77D2E4C2 FF75 20 push dword ptr [ebp+20]77D2E4C5 FF75 1C push dword ptr [ebp+1C]77D2E4C8 FF75 18 push dword ptr [ebp+18]77D2E4CB FF75 14 push dword ptr [ebp+14]77D2E4CE FF75 10 push dword ptr [ebp+10]77D2E4D1 FF75 0C push dword ptr [ebp+C]77D2E4D4 FF75 08 push dword ptr [ebp+8]77D2E4D7 E8 B5FEFFFF call 77D2E391 /按F7 否则直接跑飞


77D2E387 FF12 call dword ptr [edx] 这个CALL会跳到wndproc,不能F7跟进,否则进程会终止

7C92E470 FF1490 call dword ptr [eax+edx*4]

追踪到这里,提示调试的信息无法处理异常,进程终止

------------------------------------------------------------------------------------------------------------------------------------------------------------

综上,发现WNDPROC是在createwindow之后执行的,最后会进入一个异常处理程序,如果不在WNDPROC下断,那么直接跟踪发现是不会进入wndproc的,会在消息那一直循环。那么猜想wndproc的处理机制类似如异常处理?由USER32间接调用?。。。

原创粉丝点击