|
内核使用NT系列函数2010-05-13 18:17ZW是要通过SSDT跳转的函数,这样会被一些SSDT挂钩的程序拦截到,所以有时有直接使用NT函数的需要,当然前提是函数已经导出(不是所有的SSDT函数都是导出函数)。但是有一个问题,你如果在分发函数里使用NT系列,可能你会什么都查不到,因为这类函数如果检测到Thread的PreviousMode不是KernelMode的话就会返回00xc0000005错误,大致是说内存不可写,所以在使用时我们要改变Mode为KernelMode写个改变函数如下,仅支持Windows7和xp
KPROCESSOR_MODE SetCurrentThreadPreviousMode(KPROCESSOR_MODE a)
{
PETHREAD Thread=PsGetCurrentThread();
KPROCESSOR_MODE RetData;
ULONG Pre=0;
if(GetWindowsVersion()<6)
{
Pre=0x140;
}
else
Pre=0x13a;
_asm
{
mov eax,Thread
add eax,Pre
mov bl,[eax]
mov RetData,bl
mov bl,a
mov [eax],bl
}
return RetData;
}
|
|