闲着没事,使用OD调试下扫雷程序,看了郁金香大牛的视频,OD载入扫雷程序,F9运行,查看——窗口(刷新),就可以看到主窗口地址,不知道什么原因,本机OD显示的地址是FFXXXXXXX地址,很明显不对,换了好几个系统也不正常。无奈,只好自己跟下。
一、OD打开扫雷程序,程序停在模块入口点出
二、ctrl + g 在 RegisterClassW函数出下断点
然后 F9运行,停在此处,然后 ctrl + F9 跳出此函数
在pWndClass出下断点(此处是窗口注册类,下上断点看窗口注册类的地址),然后取消RegisterClassW的断点,重新运行,程序停在,pWndClass处
可知窗口注册类的地址为 7FED0 ,内存中查看窗口注册类内容。
由窗口注册类结构
typedef struct tagWNDCLASSW { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCWSTR lpszMenuName; LPCWSTR lpszClassName; } WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
根据回调函数的参数,右键——分析——假定参数,如图:
在此处下上断点,一但windows有消息传递,则在此处断下
我们可以拦截指定消息,右键——断点——条件
有单机按钮命令消息则断下
原文地址:http://blog.csdn.net/hjxyshell/article/details/39164363