gpt4 book ai didi

c++ - 如何为我的进程更新 PROC_THREAD_ATTRIBUTE_LIST?

转载 作者:太空宇宙 更新时间:2023-11-04 12:41:32 25 4
gpt4 key购买 nike

比如说,当我的进程是使用 STARTUPINFOEX 创建的时结构和 PROC_THREAD_ATTRIBUTE_LIST 成员:

DWORD ProtectionLevel = PROTECTION_LEVEL_SAME;
SIZE_T AttributeListSize;
STARTUPINFOEXW StartupInfoEx = { 0 };


StartupInfoEx.StartupInfo.cb = sizeof(StartupInfoEx);


InitializeProcThreadAttributeList(NULL, 1, 0, &AttributeListSize)


StartupInfoEx.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST) HeapAlloc(
GetProcessHeap(),
0,
AttributeListSize
);


if (InitializeProcThreadAttributeList(StartupInfoEx.lpAttributeList,
1,
0,
&AttributeListSize) == FALSE)
{
Result = GetLastError();
goto exitFunc;
}


if (UpdateProcThreadAttribute(StartupInfoEx.lpAttributeList,
0,
PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL,
&ProtectionLevel,
sizeof(ProtectionLevel),
NULL,
NULL) == FALSE)
{
Result = GetLastError();
goto exitFunc;
}


PROCESS_INFORMATION ProcessInformation = { 0 };


if (CreateProcessW(ApplicationName,
CommandLine,
ProcessAttributes,
ThreadAttributes,
InheritHandles,
EXTENDED_STARTUPINFO_PRESENT | CREATE_PROTECTED_PROCESS,
Environment,
CurrentDirectory,
(LPSTARTUPINFOW)&StartupInfoEx,
&ProcessInformation) == FALSE)
{
Result = GetLastError();
goto exitFunc;
}

如何为我自己的进程更新该属性列表?

比如我想修改我自己的进程'PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY以防止它创建任何子进程。

最佳答案

这并没有完全回答我的问题。这是我上面的原始帖子的评论线程的后续。

因此,只要禁用子进程的创建(类似于 PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY),就可以为自己的进程启用此功能:

DWORD dwNoChild = 1;
BOOL bResult = ::SetProcessMitigationPolicy((PROCESS_MITIGATION_POLICY)13 /*ProcessChildProcessPolicy*/,
&dwNoChild, sizeof(dwNoChild));

请注意,无需提升您的流程即可使其正常工作。

(别逼我,但我认为 ProcessChildProcessPolicy 标志仅在 Windows 10 上受支持。)

关于c++ - 如何为我的进程更新 PROC_THREAD_ATTRIBUTE_LIST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53983764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com