-
-
[旧帖]
为何HookZwLoadDriver处理后调用原函数失败
0.00雪花
-
发表于:
2011-2-18 22:40
3110
-
[旧帖] 为何HookZwLoadDriver处理后调用原函数失败
0.00雪花
编程语言:Asm
编译工具:Masm32
程序功能:SSDT.HOOk.ZwLoadDriver.有驱动加载则通过读写映射内存方式通知R3程序,让程序决定是否允许加载.
问题: 整个HOOK过程以及处理过程都没出现问题.但在用户层返回允许加载指令后..驱动调用原函数地址.却无法成功加载驱动.
问题代码:
MyZwLoadDriver Proc DriverServiceName
local liDelayTime:LARGE_INTEGER
local ansi:ANSI_STRING
or liDelayTime.HighPart,-1
mov liDelayTime.LowPart,-1000000
; invoke PsGetCurrentProcess
; add eax,dwImageFileNameOffset
; mov ecx,16
; mov edi,output
; add edi,8
; mov esi,eax
; rep movsb
mov eax,output
mov dword ptr [eax],1 ;置1 表示有驱动加载
.while 1
invoke KeDelayExecutionThread,KernelMode,0,addr liDelayTime
mov eax,output
mov eax,[eax]
.if !eax ;如果等于0则跳出 表示用户层已经处理完成
.break
.endif
.endw
mov eax,output
mov eax,[eax + 4] ;判断是否允许加载
.if eax == 1
int 3
push DriverServiceName
call lpRealZwLoadDriver
.elseif eax == 0
mov eax,STATUS_ACCESS_DENIED
.endif
ret
MyZwLoadDriver Endp
push DriverServiceName
call lpRealZwLoadDriver ;这是问题代码 调用老返回错误 ..不知道那出的问题 大牛们帮忙看下
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!