gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1598回复:4

问一个ApiHook的问题

楼主#
更多 发布于:2003-08-04 21:42
我在www.vchelp.net上下载了一个ApiHook的源程序,

http://www.vchelp.net/vchelp/zsrc/apihook.asp?type_id=25&class_id=1&cata_id=2&article_id=457

自己用的时候发现有点BUG。 老是死。不知道这儿有没有人用过

里面有一段代码是将指定的虚拟内存对用户级可见,不是很明白。

有没有兄弟能讲解一下呢,非常感谢

gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-05 12:50
我现在发现我遇到的问题就是:

如何使在驱动中分配的内存,让所有的用户层可读。

驱动里面分配的内存地址都是在
0x80000000上的,

大侠们提点建议吧
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
板凳#
发布于:2003-08-05 13:54
这个问题以前讨论过很多了:


可以参考MSDN中的文章:
HOWTO: Map Adapter RAM into Process Address Space
Q189327

HOWTO: Share Memory Between User Mode and Kernel Mode
Q191840

SAMPLE: Section.exe on Sharing Memory Between Kernel & User Mode
Q194945

在NT DDK 中有一个例子 MAPMEM (C:\\DDK\\src\\general\\mapmem)

八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-05 18:05
但我这儿情况比较特殊。我不是与我自己写的应用程序来通信。

我在驱动里面申请的内存地址在0x80000000以上,然后在这里面存放相关的代码,
然后我修改了MessageBoxW地址开始处的指令,让他跳转到我申请的内存处,

当其他应用程序(不属于我控制的),
调用MessageBox的时候,指令将跳到 0x8000000以上的内存处,

这时候就会出现访问冲突了。
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-06 18:39
KERNEL MODE ADDRESS SPACE IS NOT READABLE FROM USER MODE.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
游客

返回顶部