首页
论坛
课程
招聘
[原创]静态获取MFC的MESSAGE_MAP表
2015-9-19 00:09 6653

[原创]静态获取MFC的MESSAGE_MAP表

2015-9-19 00:09
6653
调试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段。

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



MFCFinder_bin.zip
MFCFinder_src.zip

[注意]中秋好礼,诚意满满——你提意见,我送月饼!!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (13)
雪    币: 113
活跃值: 活跃值 (33)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dalerkd 活跃值 1 2015-9-19 01:49
2
0
有好的想法去实现挺好,最近在复习消息映射
雪    币: 9659
活跃值: 活跃值 (579)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xJJuno 活跃值 2015-9-19 07:33
3
0
之前有个开源的MfcSpy更加强大...
雪    币: 181
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
firescript 活跃值 2015-9-19 08:52
4
0
楼主开源啊,,。,,,
雪    币: 215
活跃值: 活跃值 (240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lhglhg 活跃值 1 2015-9-19 09:51
5
0
是64位程序? xp 不能用?
雪    币: 943
活跃值: 活跃值 (365)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
HOWMP 活跃值 1 2015-9-20 21:18
6
0
@firescript 已上传代码
@lhglhg 因为之前是vs2013编译,需要运行库,现已经用vc6重新编译。
雪    币: 95
活跃值: 活跃值 (16)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xiaohouhui 活跃值 1 2015-10-26 17:55
7
0
谢谢LZ,好想法
看代码时候有一段看着很奇怪:
if (oldi+6!=i && oldi!=-1)
{
        tmp.Format(_T("----------------\r\n"));
        ret+=tmp;
}
==
这段代码意思是可能匹配到多个AFX_MSGMAP_ENTRY数组,需要用“------”隔开下吗?
雪    币: 943
活跃值: 活跃值 (365)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
HOWMP 活跃值 1 2015-10-27 16:27
8
0
对,因为就是可能会出现多个。
雪    币: 14
活跃值: 活跃值 (17)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
满城风雨 活跃值 2015-11-24 08:53
9
0
markkkkkkkkk
雪    币: 133
活跃值: 活跃值 (305)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
koflfy 活跃值 1 2015-11-24 09:10
10
0
mark,不错。。。
雪    币: 1367
活跃值: 活跃值 (258)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
sssccc 活跃值 2015-11-24 10:14
11
0
mark  收藏下
雪    币: 43
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hbcld 活跃值 2015-12-16 13:40
12
0
mark
雪    币: 60
活跃值: 活跃值 (478)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
君君寒 活跃值 2016-8-23 09:36
13
0
不错,可以使用。
雪    币: 279
活跃值: 活跃值 (104)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
gmhzxy 活跃值 2016-8-26 00:05
14
0
牛逼。。。很强
游客
登录 | 注册 方可回帖
返回