阅读:1626回复:1
关于ZwOpenProcess的问题
我的NewZwOpenProcess函数如下:
NTSTATUS NewZwOpenProcess(PHANDLE ProcessHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId) { int cid_valid=func_is_good_read_ptr(ClientId,sizeof(CLIENT_ID)); if (cid_valid) { DbgMsg("hooked_proc.cpp: NewZwOpenProcess: ClientId->UniqueProcess=0x%.8X",ClientId->UniqueProcess); } NTSTATUS status; char* processname=GetProcessNameU(); //获取当前进程名 int protect=cid_valid?func_check_process_protection((ULONG)ClientId->UniqueProcess,(char *)processname):FALSE; //检查是否是要拒绝的进程 ULONG pid=(ULONG)PsGetCurrentProcessId(); if (!protect) status=OldZwOpenProcess(ProcessHandle,DesiredAccess,ObjectAttributes,ClientId); else { status=STATUS_ACCESS_DENIED; DbgMsg("hooked_proc.cpp: NewZwOpenProcess(-):STATUS_ACCESS_DENIED"); } return status; } 进程名已经判断出来了,并返回了STATUS_ACCESS_DENIED 但进程还是打开了 |
|
沙发#
发布于:2007-08-30 10:37
我用Windbg在
DbgMsg("hooked_proc.cpp: NewZwOpenProcess(-):STATUS_ACCESS_DENIED"); 处设断点 然后单步执行 进程被关闭 不用单步执行进程继续打开 |
|