利用反汇编对WNDPROC进行追踪

很简单的一个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 40000001
77D2E4B3 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间接调用?。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值