微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在使用 NtCreateUserProcess 创建的进程中隐藏窗口?

如何解决如何在使用 NtCreateUserProcess 创建的进程中隐藏窗口?

我用 NtcreateuserProcess 创建了进程。 但我想用隐藏窗口选项创建进程。

我在 RTL_USER_PROCESS_ParaMETERS 中发现 ShowWindowFlags 参数,当我将 SW_HIDE 传递给他们时,它不起作用。

以下代码是当前用于 NtcreateuserProcess 函数参数的代码

RTL_CREATE_USER_PROCESS:

  PRTL_USER_PROCESS_ParaMETERS Processparameters = NULL;
  PRTL_USER_PROCESS_ParaMETERS OwnParameters = NtCurrentPeb()->Processparameters;
  NTSTATUS status = RtlCreateProcessparametersEx(&Processparameters,&ImagePath,NULL,PtrCurrentDirectory,&CommandLine,&OwnParameters->DesktopInfo,RTL_USER_PROCESS_ParaMETERS_norMALIZED);
  if (!NT_SUCCESS(status)) {
    printf("%x\n",status);
    return 1;
  }

PS_CREATE_INFO:

  PS_CREATE_INFO CreateInfo;
  RtlZeroMemory(&CreateInfo,sizeof(CreateInfo));
  CreateInfo.Size = sizeof(CreateInfo);
  CreateInfo.State = PsCreateInitialState;
  CreateInfo.InitState.u1.s1.WriteOutputOnExit = TRUE;
  CreateInfo.InitState.u1.s1.DetectManifest = TRUE;
  CreateInfo.InitState.u1.s1.ProhibitedImagecharacteristics = IMAGE_FILE_DLL;
  CreateInfo.InitState.AdditionalFileAccess = FILE_READ_ATTRIBUTES | FILE_READ_DATA;

PS_ATTRIBUTE_LIST:

  PPS_ATTRIBUTE_LIST AttributeList = reinterpret_cast<PPS_ATTRIBUTE_LIST>(
      RtlAllocateHeap(RtlProcessHeap(),HEAP_ZERO_MEMORY,AttributesSize));
  AttributeList->TotalLength = AttributesSize;

  ULONG N = 0;
  AttributeList->Attributes[N].Attribute = PS_ATTRIBUTE_IMAGE_NAME;
  AttributeList->Attributes[N].Size = NtimagePath.Length;
  AttributeList->Attributes[N].Value = reinterpret_cast<ULONG_PTR>(NtimagePath.Buffer);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。