首页
社区
课程
招聘
[求助]怎样才能找到MFC消息处理函数
发表于: 2006-5-6 20:46 4344

[求助]怎样才能找到MFC消息处理函数

2006-5-6 20:46
4344
语言MFC71,由于控件为IDOK = 1

搜索   11 01 00 00 01               
只能找到

0046FEA0  11 01 00 00 01 00 00 00 0D 04 00 00 0D 04 00 00

无法找到消息处理函数,
由于无法动态调试,有没有别的办法搜索到消息处理函数
跪谢

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
MSDN
不二之选
2006-5-6 22:44
0
雪    币: 235
活跃值: (100)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
最初由 cypunkeree 发布
由于控件为IDOK = 1

搜索 11 01 00 00 01
只能找到

........


MFC的消息映射表在内存中是分项存储的,如:
00411860  00000111                   ; 消息号,111代表 WM_COMMAND
00411864  00000000
00411868  000003E8                   ; 控件ID
0041186C  000003E8                   ; 控件ID
00411870  0000000C                   ; 标志位
00411874  00402C00  digi.00402C00    ; 处理函数

从你的情况来看,是否应该搜索
11 01 00 00 00 00 00 00 01 呢?
2006-5-7 11:14
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
http://bbs.pediy.com/showthread.php?s=&threadid=22275&highlight=MFC

没仔细研究过,但是勉强够用了
2006-5-7 11:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
太感谢这位大哥了

找到了
0046EE50  11 01 00 00 00 00 00 00 01 00 00 00 01 00 00 00  
0046EE60  35 00 00 00 A9 34 40 00                          

004034A9   . /E9 82CA0000   jmp     0040FF30

0040FF30   > \8B01          mov     eax, [ecx]
0040FF32   .  FFA0 54010000 jmp     [eax+154]

不过我测试了一下,明显找错了地方

最初由 ViperDodge 发布
http://bbs.pediy.com/showthread.php?s=&threadid=22275&highlight=MFC

没仔细研究过,但是勉强够用了

找不到啊,非常感谢,可能我的是MFC71的原因吧
2006-5-7 11:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
MFC真是太难了
2006-5-8 09:40
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
如果它是动态编译工程的,要到MFC42.dll中搜索
要是静态编译的话,就在程序本模块中搜索

PUSH    DWORD PTR [EAX+14]
PUSH    DWORD PTR [EBP+C]
PUSH    DWORD PTR [EBP+8]
PUSH    EDI

比如附件中的,Dynamictest.exe要在MFC42.DLL中搜索
而Statictest.exe在程序模块中搜索就行了
PUSH    DWORD PTR [EAX+14]  的值会显示函数执行地址

MFC7.1的好象也可以用此方法,但是要确定该程序必须是用了MFC库!
上传的附件:
2006-5-8 09:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 ViperDodge 发布
如果它是动态编译工程的,要到MFC42.dll中搜索
要是静态编译的话,就在程序本模块中搜索

PUSH DWORD PTR [EAX+14]
PUSH DWORD PTR [EBP+C]
........

的确无法找到,
问题是用OD调试不了,ICE不想装
看来MFC71太牛了,现在已出到 MFC8了
呜呜
2006-5-8 15:20
0
游客
登录 | 注册 方可回帖
返回
//