首页
论坛
课程
招聘
[分享]6年前写的一个列举MFC消息对应的代码的小工具
2010-12-8 15:33 15521

[分享]6年前写的一个列举MFC消息对应的代码的小工具

2010-12-8 15:33
15521
其实只是处理VC6的,能把菜单、按钮对应的代码地址直接显示
居然到现在还能使用..... VS2010


看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

上传的附件:
  • 1.jpg (52.41kb,1070次下载)
收藏
点赞0
打赏
分享
最新回复 (33)
雪    币: 1075
活跃值: 活跃值 (17)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
accessd 活跃值 2 2010-12-8 15:35
2
0
忘记传附件了
上传的附件:
雪    币: 2081
活跃值: 活跃值 (183)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
exile 活跃值 1 2010-12-8 15:42
3
0
有个开源的MFCSPY不错的
雪    币: 1075
活跃值: 活跃值 (17)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
accessd 活跃值 2 2010-12-8 15:56
4
0
没用过
雪    币: 2882
活跃值: 活跃值 (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd 活跃值 2010-12-8 16:42
5
0
下载收藏,上次也下了按钮时间查找工具
雪    币: 347
活跃值: 活跃值 (11)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
xPLK 活跃值 3 2010-12-8 16:53
6
0


支持一下~那个动态的工具用着有些蛋疼。
雪    币: 87
活跃值: 活跃值 (291)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
frozenrain 活跃值 2010-12-8 17:06
7
0
6年前,还没加入看雪就是高手了,膜拜加收藏。静态链接的支持否?
雪    币: 321
活跃值: 活跃值 (16)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
nevsayno 活跃值 2010-12-8 20:11
8
0
6年前,还不会上网的时候就是高手了    膜拜+收藏
雪    币: 540
活跃值: 活跃值 (266)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
evilkis 活跃值 7 2010-12-8 20:49
9
0
2年前.我还没接触过计算机......
雪    币: 326
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-12-8 20:55
10
0
期待更新一下源码可以支持更多mfcxx.dll啊,包括unicode版本
雪    币: 1075
活跃值: 活跃值 (17)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
accessd 活跃值 2 2010-12-8 23:08
11
0
刚才测试了几个vs2005的程序,发现有几个确实不显示,看来mfc有点变化。等有空的时候再更新吧。
雪    币: 279
活跃值: 活跃值 (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yzwyq 活跃值 2010-12-9 21:47
12
0
不错.有用就很好.
雪    币: 401
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiilin 活跃值 2010-12-9 21:52
13
0
下载了才发现没码 :-)
雪    币: 53
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
imdemon 活跃值 2010-12-10 10:03
14
0
求有码版本。。。
雪    币: 516
活跃值: 活跃值 (268)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
guxinyi 活跃值 5 2010-12-12 14:19
15
0
这个软件其实就是通过得到MFC里面的一个关于消息、控件和函数地址的映射表来实现的,是在MFC42.DLL中的一个固定地方。找到那个固定地址,通过进程间的HOOK就可以得到所需要的数据,还是比较简单的。具体如下图:

还有一个类似的工具,也传上来把。 MFC按钮入口地址定位器.rar
上传的附件:
雪    币: 1075
活跃值: 活跃值 (17)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
accessd 活跃值 2 2010-12-12 17:17
16
0
这个工具不是通过hook来实现的,完全是静态的。对于vc6程序,识别率是100%
原理是识别BEGIN_MESSAGE_MAP 和END_MESSAGE_MAP之间的代码
比如:
BEGIN_MESSAGE_MAP(CLoaderDlg, CDialog)
        //{{AFX_MSG_MAP(CLoaderDlg)
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        ON_BN_CLICKED(ID_SELECT, OnSelect)
        ON_BN_CLICKED(IDC_SELECT_PROCESS, OnSelectProcess)
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()

将宏完全展开后,代码如下:

const AFX_MSGMAP* PASCAL CLoaderDlg::_GetBaseMessageMap()
{
        return &CDialog::messageMap;
}
const AFX_MSGMAP* CLoaderDlg::GetMessageMap() const
{
        return &CLoaderDlg::messageMap;
}
AFX_COMDAT AFX_DATADEF const AFX_MSGMAP CLoaderDlg::messageMap =
{
        &CLoaderDlg::_GetBaseMessageMap,
        &CLoaderDlg::_messageEntries[0]
};
AFX_COMDAT const AFX_MSGMAP_ENTRY CLoaderDlg::_messageEntries[] =
{
        {WM_PAINT, 0, 0, 0, AfxSig_vv, &OnPaint},
        {WM_QUERYDRAGICON, 0, 0, 0, AfxSig_hv, &OnQueryDragIcon},
        {WM_COMMAND, (WORD)BN_CLICKED, (WORD)ID_SELECT, (WORD)ID_SELECT, AfxSig_vv, (AFX_PMSG)&OnSelect },
        {WM_COMMAND, (WORD)BN_CLICKED, (WORD)IDC_SELECT_PROCESS, (WORD)IDC_SELECT_PROCESS, AfxSig_vv, (AFX_PMSG)&OnSelectProcess },
        {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }
};

_messageEntries 就是当前wndclass的所有消息列表

然后在整个exe中搜索符合上述描述的数据即可。

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 nSig;       // signature type (action) or pointer to message #
        AFX_PMSG pfn;    // routine to call (or special value)
};

事实上,不光是MFC的消息,整个MFC程序都可以完全还原出来
雪    币: 326
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-12-12 17:39
17
0
不了解MFC,看来我是没法自己动手实现MFCXX(VC6-VC2010)的兼容性更新了
雪    币: 2882
活跃值: 活跃值 (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd 活跃值 2010-12-12 19:20
18
0
期待新版。。每次进到mfc就绕乱了-_-!!
雪    币: 100
活跃值: 活跃值 (144)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
yzslly 活跃值 4 2010-12-13 09:05
19
0
好工具,下个来收藏。。。。
雪    币: 86
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
estelle 活跃值 2010-12-13 12:22
20
0
继续等更新版本哈哈
雪    币: 239
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cjteam 活跃值 2010-12-18 15:00
21
0
6年前,刚学会打字,
雪    币: 206
活跃值: 活跃值 (626)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hiber 活跃值 2010-12-19 19:06
22
0
对VC5编译的好像没用.
要是能对SDK,和MFC的全系列都支持就好了:)
不过已经很好用了,谢谢!
雪    币: 1644
活跃值: 活跃值 (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yodamaster 活跃值 2011-3-10 20:31
23
0
才发现这么好用的一个利器。多谢分享。
雪    币: 1481
活跃值: 活跃值 (146)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2011-3-10 21:18
24
0
额滴神呀,04年的时候正是 MFC 的黄金岁月。
LZ 当年发达了吧。
雪    币: 100
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
夜凉如水 活跃值 3 2011-3-10 22:33
25
0
恩 估计是了 期待mfc 2010版本的
游客
登录 | 注册 方可回帖
返回