- 消息事件定位
首先找RegisterClass
ATOM WINAPI RegisterClass( _In_ const WNDCLASS *lpWndClass);
找到 push進(jìn)去的lpWndClass參數(shù)地址,根據(jù)_WNDCLASS 結(jié)構(gòu)可知,結(jié)構(gòu)的第二個變量是窗口回調(diào)處理函數(shù)的首地址。
typedef struct _WNDCLASS {
UINT style;// 窗口類型
WNDPROC lpfnWndProc; //窗口處理函數(shù)
int cbClsExtra;//窗口擴(kuò)展
int cbWndExtra;//窗口實(shí)例擴(kuò)展
HINSTANCE hInstance;//實(shí)例句柄
HICON hIcon;//窗口的最小化圖標(biāo)
HCURSOR hCursor;//窗口鼠標(biāo)光標(biāo)
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜單
LPCTSTR lpszClassName;// 窗口類名
} WNDCLASS, *LPWNDCLASS;
找到消息函數(shù)地址處,下條件斷點(diǎn)。

回調(diào)函數(shù)
[esp+8] == 0x201
[esp+8] 是消息ID,0x201 是鼠標(biāo)左擊事件 WM_LBUTTOMDOWN
- 子窗口按鈕消息處理
在消息函數(shù)地址處,下條件斷點(diǎn)。
[esp+8] == WM_COMMAND && [ESP+4] == 按鈕句柄

按鍵消息響應(yīng)流程.png

WM_COMMAND.png