按钮事件找法

MFC程序:

方法1:

OD命令:bp TranslateMessage MSG==WM_LBUTTONUP

点击按钮以后就断在CALL 到 TranslateMessage函数. 这时候按Ctrl+F9执行到返回,回到USER32领空

77D274F4    E8 FD16FFFF     CALL USER32.TranslateMessage

77D274F9    56              PUSH ESI                                 ; MfcTest.0040306C 77D274FA    E8 0215FFFF     CALL USER32.DispatchMessageW 77D274FF    5B              POP EBX

按F7,进入DispatchMessageW

此时按下Alt+M,打开Memory map窗口,在.text按F2下断,F9运行,离开主程序领空后,立刻又在.text按F2下断,F9运行, 连续几次, 就可以定位到按钮事件处理位置了.

方法2:

OD载入后.ALT+E,来到可执行模块,找MFC的核心DLL:MFC42 然后就双击进去 然后就CTRL+F,查找特征代码:sub eax,0a 找到后,就在下面的je处跟随,跟随后看到的CALL,就是那个关键CALL了!下断 断下后F7跟进,F8几次,就会来到按纽事件代码处了! (都是复制的,汗)