能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我估计不光可以断下,而且还可以断到很多,以至于找不到是哪个。
|
能力值:
( LV6,RANK:80 )
|
-
-
3 楼
试试先得到菜单的ID,然后在OD中搜索“全部常数”,下断。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
雨兄:你的全部常数在哪里??到处找遍了也没这个菜单,能否详细一点那?多谢
我在网上找到这么一篇文章讲菜单消息断点的。
一种效果很好的菜单消息断点(菜单响应函数)的定位方法
2009-06-14 09:54
对于菜单响应函数的定位,从pediy(看雪)论坛很多的文章来看,
都是说通过MSG==WM_COMMAND或者[ESP+8]==0111 (wm_command的宏定义对应0x111)。
本人也是这样尝试:od(ollydbg,ollyice)载入exe,首先点击工具条“W”图标,在最上窗体上面右键,
选择“切换断点”,然后点击工具条“B”,修改条件为“[ESP+8]==WM_COMMAND”,
再F9全速运行,结果总是断不下来。
如果去掉条件“[ESP+8]==WM_COMMAND“,则可以断下来,但是只要切换窗口,
那么太多的消息都被断下来了。
看来这种方法不行(或者我没有正确使用?请大家指教)。
郁闷。。。。。。
偶然搜得一篇文章,受到启发,现将方法总结如下:
1.reshacker查看要截获菜单响应函数的exe的资源,找到对应菜单的id(最后一个10进制数字就是:这儿假设32852,对应0x8054)
2.od载入exe,并f9全速运行
3.启动winhex,菜单“tool”->"open ram",选择这个exe进程,展开,再次选择这个exe,就打开了运行的改进程内存,
4.winhex搜索,菜单“search”->"find hex value",输入查找“5480”(第一步中0x8054在内存表示),找到如下特征即就是响应函数地址:连续两个0x8054后第8个位置开始的4byte即为响应函数地址(记得看的话要颠倒byte位置)。
(如果有多种这种情况,请看下地址是不是004开头的)。
5.od找到对应的代码,f2设置断点
6.操作该菜单,则应该断下来了。
我按他的步骤,唯一不同是我在IDA里面搜索ID的,这应该和winhex搜索是一样的吧,结果搜不到连续两个ID的字串,郁闷啊
|
能力值:
( LV6,RANK:80 )
|
-
-
5 楼
还是上程序吧
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
附件就是一个基本的MFC单文档工程,想点击菜单cyd的时候断下来。 说明是这里我不想用字串参考,因为我要破解的程序里面是没有字串可以参考的
|
能力值:
( LV6,RANK:80 )
|
-
-
7 楼
程序不能运行。。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不好意思,不知你没有装VC6,重新改静态编译了一下,
cyd菜单的ID是32772合16进制数8004h
|
能力值:
( LV6,RANK:80 )
|
-
-
9 楼
看看吧,是你想要的效果吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
老兄,视频里面没有录你是怎么个下断点的哦,光一个下完断点之后的演示呀
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
看看。。。。。。。。。。
|
|
|