半块西瓜皮 发表于 2018-4-26 15:19

申请会员ID:HOWMP【申请通过】

1、申 请 I D :HOWMP
2、个人邮箱:zhaopeiyuan6@qq.com
3、原创技术文章:


看雪ID:HOWMP


静态获取MFC的MESSAGE_MAP表
#调试MFC程序的时候,每次都要去找MESSAGE_MAP,所以写个程序自动去找

MESSAGE_MAP大概长这样

BEGIN_MESSAGE_MAP(CMFChelloDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDOK, &CMFChelloDlg::OnBnClickedOk)
ON_WM_DROPFILES()
END_MESSAGE_MAP()
实际上每个都是一个AFX_MSGMAP_ENTRY结构

struct AFX_MSGMAP_ENTRY
{
UINT nMessage;   // windows message
UINT nCode;      // control code or WM_NOTIFY code
UINT nID;      // control ID (or 0 for windows messages)
UINT nLastID;    // used for entries specifying a range of control id's
UINT_PTR nSig;       // signature type (action) or pointer to message #
AFX_PMSG pfn;    // routine to call (or special value)
};
其中pfn是真正的消息处理函数,通过观察这个结构由以下特征

nMessage在{0,1024}的范围内

nCode似乎一直都是0

nSig是对pfn函数参数的sign,不同版本MFC也不同,范围大概在{0,100}

pfn肯定要位于代码段

还有一个特征是AFX_MSGMAP_ENTRY肯定位于rdata段。

通过以上限定,来静态抓取信息


代码:
程序:   

看雪链接:https://bbs.pediy.com/thread-204239.htm

Hmily 发表于 2018-4-27 10:45

请在看雪论坛给hmilywen发一条短消息确认是本人申请,再在本帖回复我一下。

发表于 2018-5-3 16:16

Hmily 发表于 2018-4-27 10:45
请在看雪论坛给hmilywen发一条短消息确认是本人申请,再在本帖回复我一下。

已经发送

Hmily 发表于 2018-5-3 18:15

I D:HOWMP
邮箱:zhaopeiyuan6@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

HOWMP 发表于 2018-5-9 09:58

前来报道
页: [1]
查看完整版本: 申请会员ID:HOWMP【申请通过】