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

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

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

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (13)
雪    币: 118
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dalerkd 1 2015-9-19 01:49
2
0
有好的想法去实现挺好,最近在复习消息映射
雪    币: 12237
活跃值: (3310)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xJJuno 2015-9-19 07:33
3
0
之前有个开源的MfcSpy更加强大...
雪    币: 191
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
firescript 2015-9-19 08:52
4
0
楼主开源啊,,。,,,
雪    币: 222
活跃值: (1866)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lhglhg 1 2015-9-19 09:51
5
0
是64位程序? xp 不能用?
雪    币: 1603
活跃值: (1613)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
HOWMP 1 2015-9-20 21:18
6
0
@firescript 已上传代码
@lhglhg 因为之前是vs2013编译,需要运行库,现已经用vc6重新编译。
雪    币: 96
活跃值: (36)
能力值: ( 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数组,需要用“------”隔开下吗?
雪    币: 1603
活跃值: (1613)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
HOWMP 1 2015-10-27 16:27
8
0
对,因为就是可能会出现多个。
雪    币: 18
活跃值: (47)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
满城风雨 2015-11-24 08:53
9
0
markkkkkkkkk
雪    币: 122
活跃值: (1410)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
koflfy 1 2015-11-24 09:10
10
0
mark,不错。。。
雪    币: 1361
活跃值: (928)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
sssccc 2015-11-24 10:14
11
0
mark  收藏下
雪    币: 43
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hbcld 2015-12-16 13:40
12
0
mark
雪    币: 6090
活跃值: (599)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
君君寒 2016-8-23 09:36
13
0
不错,可以使用。
雪    币: 284
活跃值: (250)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
gmhzxy 2016-8-26 00:05
14
0
牛逼。。。很强
游客
登录 | 注册 方可回帖
返回