使用NtQuerySystemInformation来检索加载的模块,从加载模块里面搜索出ntoskrnl.exe模块
NTSTATUS Status;
PUCHAR BaseAddress = NULL;
NTSTATUS ntStatus;
PMODULES pModules;
ULONG NeededSize;
pModules = (PMODULES)&pModules;
ntStatus = NtQuerySystemInformation(SystemModuleInformation, pModules, 4, &NeededSize);
if(ntStatus == STATUS_INFO_LENGTH_MISMATCH)
{
pModules = (PMODULES)ExAllocatePool(PagedPool, NeededSize);
if(!pModules)
return STATUS_INSUFFICIENT_RESOURCES;
ntStatus = NtQuerySystemInformation(SystemModuleInformation, pModules, NeededSize, NULL);
if(!NT_SUCCESS(ntStatus))
{
ExFreePool(pModules);
return ntStatus;
}
}
if(!NT_SUCCESS(ntStatus))
{
return ntStatus;
}
BaseAddress = (PUCHAR)pModules->smi.Module[0].MappedBase;
本文介绍如何使用NtQuerySystemInformation函数检索已加载的模块,并从中查找ntoskrnl.exe模块。通过两次调用NtQuerySystemInformation,确保获取完整的模块列表。
1万+

被折叠的 条评论
为什么被折叠?



