阅读:2050回复:3
疑惑:为什么在驱动中不能直接调用 Nt 系列服务函数?
在驱动中直接调用 Nt 系列服务函数往往会失败返回 0xC0000005。
但是把调用委托给系统工作者进程却能成功。 若干个月后,俺知道了直接调用必须在系统进程空间里。 但是一个显然的事实是,俺 HOOK 的这些函数,很多情况都是跑在非系统空间下的! 有人研究过么?俺的调试环境不是很好,要不应该可以跳进 ZW 系列函数里面去看看它都干了些什么! |
|
|
沙发#
发布于:2007-03-28 22:08
和偶的问题很相似,帮顶一下
|
|
板凳#
发布于:2007-03-29 10:26
可以调的,只有一个不同,就是所有参数的内存都必须在UserAddress中
比如要调NtOpenFile,第一个参数PHANDLE, 第三个参数POBJECT_ATTRIBUTES及其中的PUNICODE_STRING及PUNICODE_STRING中的Buffer,第四个参数PIO_STATUS_BLOCK,地址都小于MmHighestUserAddress,这样就行了。 |
|
地板#
发布于:2007-03-30 09:39
GNiDiA, thank you very much.
|
|
|