-
-
[求助]hook NtOpenProcess出现的诡异问题
-
发表于:
2008-4-18 04:36
6121
-
[求助]hook NtOpenProcess出现的诡异问题
我hook 掉这个内核函数。。然后每次加载驱动就BSOD 晕 怎么回事啊。代码好象没什么问题。
这里是驱动部分的改NtOpenProcess前5个字节的代码
HookCode db 0e9h
HookAddress dd ?
_Hook proc
.if lpNtOpenProcess
cli
mov eax,cr0
and eax,0FFFEFFFFH
mov cr0,eax
mov esi,lpNtOpenProcess ;这个变量存放的NtOpenProcess地址
lea edi,RawNtOpenProcess ;保存前5个字节的变量 一会在hookproc里面用来恢复
mov ecx,5
rep movsb
mov eax,lpNtOpenProcess
add eax,5
mov edx,offset My_NtOpenProcess ;这个是准备跳到的地址 改NtOpenProcess跳进 My_NtOpenProcess里面来
sub edx,eax
mov HookAddress,edx
lea esi,HookCode
mov edi,lpNtOpenProcess
mov ecx,5
rep movsb
mov eax,cr0
or eax,00010000H
mov cr0,eax
sti
.endif
ret
_Hook endp
这里是让 NtOpenProcess准备掉进来的代码
My_NtOpenProcess:
pushad
cli
mov eax,cr0
and eax,0FFFEFFFFH
mov cr0,eax
mov esi,offset RawNtOpenProcess
mov edi,lpNtOpenProcess
mov ecx,5
@@:
mov al,BYTE ptr [esi]
mov BYTE ptr [edi],al
inc esi
inc edi
loop @B
mov eax,cr0
or eax,00010000H
mov cr0,eax
sti
popad
jmp lpNtOpenProcess
简单的把前5个字节恢复 然后jmp回去 这样也出错?SHIT
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课