mfc-study
mfc-study
最近遇到一个mfc的题目,由于没接触过mfc,卡了好几天。赶紧补充一波。
0x00 啥是MFC?
微软基础类库MFC用C++类包装了部分Windows API,并包含了一个应用程序框架。类被定义为很多用句柄来管理的窗口对象,另外还有预定义窗口和各种通用控件。
消息处理函数:就是监听消息,然后做出响应的函数。
0x01
参考1:小小鱼师傅的《浅谈MFC类CrackMe中消息处理函数查找方法》
https://www.cnblogs.com/h2zZhou/p/10593168.html
讲的很好,就不直接copy了。
主要内容就是,当我们执行某个操作的时候,程序会执行什么处理函数。而在MFC中,实现这个功能主要有两个相关的数据结构:
1 | struct AFX_MSGMAP{ |
其中,我们想要的某个控件的消息处理函数,就存放在该结构体的pfn中(其中nID与我们的控件ID相同的AFX_MSGMAP_ENTRY中的pfn就是我们所寻找的消息响应函数)。
因此,我们只需要找到以下两个信息,即可定位消息响应函数。
需要的控件ID
AFX_MSGMAP
AFX_MSGMAP存在于.rdata段,而.rdata段一般有RTTI,虚函数表与AFX_MSGMAP,所以MSG_MAP数据结构特征相对容易分辨。
例如:
这个结构的特点是前面一个函数的偏移地址,后面一个函数的偏移地址,类似这样的基本都是AFX_MSGMAP_ENTRY结构体,AFX_MSGMAP_ENTRY又是AFX_MSGMAP的组成部分。
参考2:
https://www.jianshu.com/p/6e75c5d58230
上述博客说了查找消息控件函数的3种方法。
留言
- 文章链接: https://wd-2711.tech/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!