- 消息事件定位
首先找RegisterClass
ATOM WINAPI RegisterClass( _In_ const WNDCLASS *lpWndClass);
找到 push进去的lpWndClass参数地址,根据_WNDCLASS 结构可知,结构的第二个变量是窗口回调处理函数的首地址。
typedef struct _WNDCLASS {
UINT style;// 窗口类型
WNDPROC lpfnWndProc; //窗口处理函数
int cbClsExtra;//窗口扩展
int cbWndExtra;//窗口实例扩展
HINSTANCE hInstance;//实例句柄
HICON hIcon;//窗口的最小化图标
HCURSOR hCursor;//窗口鼠标光标
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜单
LPCTSTR lpszClassName;// 窗口类名
} WNDCLASS, *LPWNDCLASS;
找到消息函数地址处,下条件断点。
回调函数[esp+8] == 0x201
[esp+8] 是消息ID,0x201 是鼠标左击事件 WM_LBUTTOMDOWN
- 子窗口按钮消息处理
在消息函数地址处,下条件断点。
[esp+8] == WM_COMMAND && [ESP+4] == 按钮句柄
网友评论