瑞星卡卡安全论坛

首页 » 综合娱乐区 » 活动专区 » 实习生专区 » 实习生交流区 » 关于内存不可读
初殇 - 2009-7-7 17:30:00
问题背景地址:http://bbs.ikaka.com/showtopic.aspx?topicid=8640309&page=2

关于内存不可读,我前些天因为要写程序,参考过一本书。而书中恰巧谈到了Win9X与WinNT(2000以上的系统都属於WinNT内核)的区别,也就是关于内存读写方面的区别。原文如下:

书名:Visual Basic  WIN32 API编程
出版社:中国电力出版社
作者:STEVEN ROMAN
译者:陈志远
CIP:ISBN7-5083-0534-5
出版日期:01年4月第一版


 附件: 您所在的用户组无法下载或查看附件

      结论:由上可见,在WinNt以上的系统中出现内存不可读的问题,完全是因为NT的自我保护机制造成。这种机制不可能因为某一个软件而被破坏,所以用什么工具去修复内存试图解决内存不可读的问题是不可行的

    个人认为,没有把握的就不要回,回复让用户下载软件去修复内存,不是误导用户,是什么呢?

    至于如何解决这个问题,从上文中,我们也可以发现,提到了特殊权限。提高这个程序的权限也许是一种方法?

用户系统信息:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)
s_nara - 2009-7-7 18:33:00
意思是说有什么  提示 内存(OOXXOXOXOOX)不可读曲  是内存条存在物理损坏?
初殇 - 2009-7-7 18:37:00
不是。。。 。你要看上面的文章啊@汗:kaka6:
提示这样的错误是说NT启动了内存保护机制。跟物理没有关系。
zapline - 2009-7-7 18:41:00
不一定
__asm
{
xor eax,eax
mov eax,[eax]
}
这样也会内存不可读
初殇 - 2009-7-7 19:08:00
总不会有正常的程序连着两次清零吧:kaka6:
zapline - 2009-7-7 19:19:00
程序代码写的不安全很容易出现这种情况
前一个函数获取指向某种结构的指针
失败返回0
而没有检测就作为下一个函数的参数
就可能出现这种情况
fly百分百 - 2009-7-7 20:59:00
分情况:
nt系统从0x00000000开始的16KB,是受保护的。如果访问了就会出现内存不可读。这是操作系统出于对操作空指针是保护的目的
还有就是访问了内存页中不可读属性的内存。
幽灵楠 - 2009-7-7 21:13:00
有些软件出现问题了也会出现 XXX 内存不能为READ  内存不能为 written的。原来华夏黑客联盟里面那站长说过这个问题了 还说的很详细。是有方法可以解决的。只补过稍显麻烦。
gtyre2 - 2009-7-7 21:44:00
我会先先重装遍系统
如果重装后还出现内存不能READ
就从硬件下手:kaka6:
最硬的石头 - 2009-7-7 22:13:00


引用:
原帖由 zapline 于 2009-7-7 18:41:00 发表
不一定
__asm
{
xor eax,eax
mov eax,[eax]
}
这样也会内存不可读


膜拜:kaka14:
daemonz - 2009-7-7 23:09:00
多数情况下还是指针指向了不安全的区域,但这个也确实没什么好修复的
zapline - 2009-7-7 23:46:00
总之
让用户下载软件去修复内存
提高这个程序的权限
都是不恰当的回答
skaka7941455 - 2009-7-8 15:56:00
学习了
初殇 - 2009-7-8 20:26:00
突然发现,你的代码提示内存不可读,还不是因为内存保护机制在起作用么?:kaka6:
最硬的石头 - 2009-7-8 21:48:00
也许是访问不存在的内存地址,R0下九直接蓝屏了
1
查看完整版本: 关于内存不可读