ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
阅读:1987回复:3

疑惑:为什么在驱动中不能直接调用 Nt 系列服务函数?

楼主#
更多 发布于:2007-03-28 17:11
  在驱动中直接调用 Nt 系列服务函数往往会失败返回 0xC0000005。
但是把调用委托给系统工作者进程却能成功。
若干个月后,俺知道了直接调用必须在系统进程空间里。

但是一个显然的事实是,俺 HOOK 的这些函数,很多情况都是跑在非系统空间下的!

有人研究过么?俺的调试环境不是很好,要不应该可以跳进 ZW 系列函数里面去看看它都干了些什么!
Thinking
codez
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-28 22:08
和偶的问题很相似,帮顶一下
GNiDiA
驱动小牛
驱动小牛
  • 注册日期2006-10-11
  • 最后登录2017-10-09
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望145点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-03-29 10:26
可以调的,只有一个不同,就是所有参数的内存都必须在UserAddress中

比如要调NtOpenFile,第一个参数PHANDLE, 第三个参数POBJECT_ATTRIBUTES及其中的PUNICODE_STRING及PUNICODE_STRING中的Buffer,第四个参数PIO_STATUS_BLOCK,地址都小于MmHighestUserAddress,这样就行了。
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-30 09:39
GNiDiA, thank you very much.
Thinking
游客

返回顶部