首页
社区
课程
招聘
[旧帖] 关于设置消息断点的问题 0.00雪花
发表于: 2013-3-22 16:16 4472

[旧帖] 关于设置消息断点的问题 0.00雪花

2013-3-22 16:16
4472
步骤:
1、使用[Ctrl+G]呼出“表达式跟随窗口”,输入“TranslateMessage”,然后回车。
2、在“转到”的位置上使用[Shift+F4]呼出“条件记录断点设置窗口”。
3、在“条件”中输入如下语句“[[ESP+4]]==当前按钮句柄&&[[ESP+4]+4]==WM_LBUTTONUP”。
4、把“暂停程序”设置为“按条件”,其他都为默认,然后确定。
5、点击按钮后,程序会停在“TranslateMessage”函数的系统领空中。
6、查看内存,对代码段下“内存访问断点”,然后经过多次[F9](运行),就会找到关键的处理代码了。

上面的第5步是程序被条件断点断在了系统领空,然后怎么根据这个中断找到这个消息的处理函数?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 11
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个TranslateMessage就是函数呀
可能还不理解你的意思 希望帮到你
2013-3-24 07:32
0
雪    币: 1121
活跃值: (707)
能力值: ( LV5,RANK:66 )
在线值:
发帖
回帖
粉丝
3
看楼主说的,是要找出鼠标点击消息的处理函数。那么,断在系统领空后,按第六条操作,不是已经达到了么?
2013-3-25 08:45
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
对啊  第六步就可以到达消息处理函数了。
2013-3-25 19:03
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个函数只是翻译消息
他并不是消息处理的函数。
2013-3-25 19:04
0
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
6
其实最好是在dispatchmessag函数进行上述操作,然后跟进去,但是这个过程中有些消息是要进入内核然后才会回调到应用层的消息处理函数的,有些是不必经过内核而进入消息处理函数。

这个方法并不能保证所有消息都被断下,只能用于断下Post的消息,而send过来的message根本不会走上述的路径,而是直接由内核调用到应用层的消息处理函数。
2013-3-25 19:10
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
dispatchmessag在分派消息设断点如果消息被断下会进入这个函数中,然后返回的时候就会到找到消息处理函数?
2013-3-25 19:41
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
能不能说下找消息处理函数的几种方式?
2013-3-25 19:46
0
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
9
靠谱点的方法:先找到一个确认的处于消息处理函数内部的断点,然后断下,然后看栈,找到
user32.dll!_InternalCallWinProc@20()
这个函数,这个函数的上面一定是程序的消息处理函数了。
2013-3-25 19:58
0
雪    币: 524
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
先找到一个确认的处于消息处理函数内部的断点,怎么找?
2013-3-26 08:29
0
游客
登录 | 注册 方可回帖
返回
//