版块
论坛
喜欢
话题
应用
搜索
登录
注册
xiangshifu的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=30995
在驱动中,如何对于任意内存空间读写?
在驱动中,如何对于任意内存空间读写?在9x下很简单,用指针直接就可以操作!在nt/2000/xp系统下,对于一个线性地址,是不是首先要转化成物理地址,再读写,如果有写保护,还应去掉其写保护标志位?有没有例子?我找到一份代码,没有看懂!NTSTATUS WriteReadOnlyM...
全文
回复
(
7
)
2004-04-05 12:46
来自版块 -
内核编程
◆
◆
表情
告诉我的粉丝
提 交
yonghong204
:
在windows 2000/xp下,对内存读写实施了更加有效的保护,直接利用线性地址在应用程序中读写内存将死机,而在驱动程序中,也只能对部分地址进行读写
(2004-04-07 11:22)
回复
wowocock
:
如果你在内核层的话,可以直接搜索页表,然后把不存在的地址指向一个存在的物理页,然后就可以往里面写了,当然你实际写的是另一个线性地址的物理地址,只不过欺骗了操作系统而已,嘿嘿......
(2004-04-07 11:14)
回复
xiangshifu
:
是要对地址的有效性进行检测!
(2004-04-07 11:03)
回复
AllenZh
:
因为该地址无效,访问当然有问题 即使对某些程序有效,也不是对所有程序有效 你必须做地址转换才可以 这段代码运行后 必定死机 为什么? #include "mem.h" #include "debug.h" #de...
(2004-04-07 10:18)
回复
xiangshifu
:
如何读/写 地址 0x01234567 ?假设这个地址有效!
(2004-04-05 20:22)
回复
xiangshifu
:
这段代码运行后 必定死机 为什么? #include "mem.h" #include "debug.h" #define PROCESS_NAME_OFFSET 0x01234567 VOID Read...
(2004-04-05 19:31)
回复
wowocock
:
首先你要确保该地址存在,不然当然不行,其次在XP以后系统有内核写保护,防止RING0驱动改写核心结构,X86下需要屏蔽CR0的位16 WP保护位就可以在RING0读写任意存在的地址了。
(2004-04-05 13:28)
回复
xiangshifu
加关注
写私信
0
关注
1
粉丝
115
帖子
返回顶部