|  | 
 
| 内核使用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;
 }
 
 
 | 
 |