zw10435
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2007-08-30
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1626回复:1

关于ZwOpenProcess的问题

楼主#
更多 发布于:2007-08-30 10:34
我的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
但进程还是打开了
zw10435
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2007-08-30
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-30 10:37
我用Windbg在
DbgMsg("hooked_proc.cpp: NewZwOpenProcess(-):STATUS_ACCESS_DENIED");
处设断点
然后单步执行
进程被关闭

不用单步执行进程继续打开
游客

返回顶部