windows 程序消息事件定位

  • 消息事件定位
    首先找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] == 按钮句柄

按键消息响应流程.png

WM_COMMAND.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容