阅读:1214回复:2
为什么取进程名偶尔会蓝屏?
为什么取进程名偶尔会蓝屏?
附代码: void GetProcessNameOffset() { int i; PEPROCESS curproc; curproc = PsGetCurrentProcess(); for( i = 0; i < 3*PAGE_SIZE; i++ ) { if( !strncmp( "system", (PCHAR) curproc + i, strlen("System") )|| !strncmp( "System", (PCHAR) curproc + i, strlen("System") )|| !strncmp( "SYSTEM", (PCHAR) curproc + i, strlen("System") )) { g_ProcessNameOffset = i; } } } //获得程序名字 int GetProcessName( PCHAR theName ) { PEPROCESS curproc; char *nameptr; ULONG i; KIRQL oldirql; if( g_ProcessNameOffset ) { curproc = PsGetCurrentProcess(); nameptr = (PCHAR) curproc + g_ProcessNameOffset; strncpy( theName, nameptr, 16);//***// theName[16] = 0; /* NULL at end */ return TRUE; } return FALSE; } 在HookZwQueryDirectoryFile中调用GetProcessName怎么会出现 PAGE_FAULT_IN_NONPAGED_AREA (50)蓝屏。出错位置为这一行//***// 这个驱动是开机自动加载的,g_ProcessNameOffset已经在DriverEntry中得到。 求大侠帮忙!3X |
|
沙发#
发布于:2007-01-08 16:55
你跟一下,
有的时候, nameptr 指向的地址可能是 非法的 |
|
板凳#
发布于:2007-01-10 10:08
找到i以后就应该break了吧.不应该再继续找了.
|
|