首页
社区
课程
招聘
OD内存断点原理问题
发表于: 2012-7-26 16:22 5686

OD内存断点原理问题

2012-7-26 16:22
5686
OD可以下内存断点,所以我也想实现这个功能,看了一下说明,是调用了VirtualProtectEx引起内存异常实现的,我也按照这个方法把要监控的内存保护属性设置成了1,但是起不到OD的效果,另外如果用OD调试软件后,用OD自带的设置内存断点就可以断下来,要是外部程序设置内存的保护属性为1就会不断引起内存读写异常,并且不是断在自己要设置的内存地址里,为什么呢!,另外我发现OD设置了内存断点后好像很有规律的调用VirtualProtectEx调试内存的保佑属性,希望有高手解答一下要如果能才实现像OD那样的内存断点

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Bun
2
内存断点就是设置SEH 再向指定内存写入int3引发异常后 再在你设置的SEH处理函数里面接收到各寄存器的值 以前也做过一个 用的 AddVectoredExceptionHandler 这个函数
2012-7-31 23:51
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Bun
3
触发异常的种类有很多 int3是一种 读取被保护的内存也会触发异常(就是常见的xxx内存不能为Read) 这些都可以在你设置异常处理函数里判断
2012-8-1 00:00
0
雪    币: 100
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
修改内存属性也会触发异常。
2012-8-4 23:34
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
1、起不到效果应该是你的程序设计有问题啦。
2、OD会记忆设定的断点,当发现断点不是自已设定的,它是不会随便拉来自已处理的。
3、外部程序设内存断点,没断在设置的内存地址,诂计你是说的执行断点吧,应该只去掉页的可执行标记。
2012-8-5 09:33
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
先谢谢各位回答问题的朋友,问题被我自己解决了,我原以为解决不了的,被我无意中解决了,现在把答案发上来,当把内存属性设置为1时,API是把一个页的内存属性设置成了1,而不是只设置指定的地址,这就造成了程序会一直出现内存异常,而不只是在指定的地址才出现,只要处理好地址不对的异常就可以实现了
2012-8-10 12:02
0
游客
登录 | 注册 方可回帖
返回
//