gpt4 book ai didi

c - 请求 ProcessBasicInformation 时 ZwQueryInformationProcess 出现奇怪的行为

转载 作者:行者123 更新时间:2023-11-30 16:18:43 27 4
gpt4 key购买 nike

我拥有这种和平的代码作为驱动程序的一部分。该驱动程序适用于 Windows 7 x64,因此它在同一系统上执行。

PVOID GetProcessInformation(ULONG PID)
{
NTSTATUS ntStatus = STATUS_UNSUCCESSFUL;

HANDLE hProcess;
PEPROCESS pProcess = NULL;

PVOID pProcInfo = NULL;

ULONG ulRet = 0;

if ((pProcInfo = ExAllocatePoolWithTag(NonPagedPool, sizeof(PROCESS_BASIC_INFORMATION), 'QPI')) == NULL)
{
DbgPrint("ExAllocatePoolWithTag failed");
return NULL;
}
ntStatus = PsLookupProcessByProcessId(PID, &pProcess);
if (!NT_SUCCESS(ntStatus))
{
DbgPrint("PsLookupProcessByProcessId Returned: 0x%08x\n", ntStatus);
ExFreePool(pProcInfo);
return NULL;
}
ntStatus = ObOpenObjectByPointer(pProcess, 0, NULL, 0, 0, KernelMode, &hProcess);
if (!NT_SUCCESS(ntStatus))
{
DbgPrint("ObOpenObjectByPointer sReturned: 0x%08x\n", ntStatus);
ExFreePool(pProcInfo);
return NULL;
}

ObDereferenceObject(pProcess);
ntStatus = ZwQueryInformationProcess(hProcess, ProcessBasicInformation, pProcInfo, sizeof(PROCESS_BASIC_INFORMATION), &ulRet);
if (!NT_SUCCESS(ntStatus))
{
DbgPrint("ZwQueryInformationProcess Returned: 0x%08x\n", ntStatus);
ExFreePool(pProcInfo);
return NULL;
}
if (ulRet != sizeof(PROCESS_BASIC_INFORMATION))
DbgPrint("Warning : ZwQueryInformationProcess Returned Length is different than ProcessInformationLength");

return pProcInfo;
}

PROCESS_BASIC_INFORMATION 在 ntddk.h 中定义。 PID值正确。但 ZwQueryInformationProcess 的结果很奇怪。我只得到 PEB 地址的较低部分(PROCESS_BASIC_INFORMATION 结构中的 PPEB 部分)。例如,另一个工具表示 PPEB 等于 0x000007FFFFFDC000。我的驱动程序只知道 0xFFFDC000。我也尝试 PsGetprocessPeb(...) 函数,得到相同的结果。 ZwQueryInformationProcess函数成功。

最佳答案

更正:
为了解决您问题的我只得到 PEB 地址的下半部分部分,
因为pProcess是一个指针,所以使用指针格式说明符:%p

ntStatus = PsLookupProcessByProcessId(PID, &pProcess);
// your error handling code
printf("PsLookupProcessByProcessId: 0x%p\n", pProcess);

“%p” pointer format specifier 将参数显示为十六进制地址。

关于c - 请求 ProcessBasicInformation 时 ZwQueryInformationProcess 出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833628/

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