首页
社区
课程
招聘
[旧帖] [求助]OD堆栈区上为什么不能设内存断点? 0.00雪花
发表于: 2007-6-21 21:00 6136

[旧帖] [求助]OD堆栈区上为什么不能设内存断点? 0.00雪花

2007-6-21 21:00
6136
用OD加载Win98记事本,第一条指令是:

004010CC >/$  55            PUSH EBP

此时,ESP=0012FFC4,上条指令也就是往0012FFC0上传入EBP的值

如果在0012FFC0上设置"内存访问"断点,再F9运行,OD没有中断,记事本窗口也没有弹出,等了一阵,OD显示"访问违规"

请问高手:为什么不能在0012FFC0上设置内存断点? 谢了

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自已顶一下,请求解答:

是我对内存断点理解有误,还是OD的问题? 谢...
2007-6-22 16:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没人回答,我就自已解决:

一、先用汇编写一段最简单的测试程序:

start:
        nop
        nop
        push        eax       <=== 1
        pop        ebx       <=== 2
        nop       
        nop
        ret
end start

OD加载后,ESP=0012FFC4

在0012FFC0处设置内存访问断点,F9运行,OD中断在push eax语句上,再F9,OD中断在 pop ebx 上,这都很正确。再F9,问题就来了,OD出现“访问违规,正在执行[00000000] - 使用 Shift+F7/F8/F9来忽略异常"

OD重新加载上述程序:在0012FFC0处设置内存写入断点,F9运行,OD中断在 push eax 上,这很正确。再F9,程序正常退出。

有点怪:在堆栈区可以设置“内存写入”断点,而不能设置“内存访问”断点???

=======================================================================================
再来一段测试程序:

start:
        nop
        nop
        mov        eax,[esp]
        mov        [esp],eax
        nop
        ret
end start

同样进行上述测试,由于这段程序是直接对[esp]操作,所以,应在0012FFC4上进行断点设置,经测试,发现在0012FFC4上设置“内存写入”断点和设置“内存访问”断点,都很正常,
程序均能按预想方式中断,并能正常退出。

这就把我弄糊涂了,难道是 push指令 和 move指令不同造成了上述现象?但这两个条指令都是访问内存指令啊?

请对内存断点有深切理解的高手们来探讨一下这个问题
2007-6-23 07:02
0
游客
登录 | 注册 方可回帖
返回
//