Windows 驱动线程获取模块
时间: 2023-08-19 13:38:38 浏览: 119
获取 Windows 驱动程序中的模块可以使用 PsLoadedModuleList 来实现。PsLoadedModuleList 是一个指向系统中所有已加载模块的链表头的指针,可以通过遍历该链表来获取每个模块的基址、大小、文件名等信息。以下是获取 PsLoadedModuleList 并遍历模块链表的示例代码:
```c
// 获取 PsLoadedModuleList
PVOID pModuleList = NULL;
NTSTATUS status = ZwQuerySystemInformation(SystemModuleInformation, &pModuleList, 0, NULL);
if (!NT_SUCCESS(status)) {
// 处理错误
return;
}
// 遍历模块链表
PSYSTEM_MODULE_INFORMATION pModuleInfo = (PSYSTEM_MODULE_INFORMATION)pModuleList;
for (ULONG i = 0; i < pModuleInfo->ulModuleCount; i++) {
PRTL_PROCESS_MODULE_INFORMATION pModule = &(pModuleInfo->Modules[i]);
// 访问模块基址、大小、文件名等信息
PVOID pBaseAddress = pModule->ImageBase;
ULONG ulImageSize = pModule->ImageSize;
PWSTR pwzModuleName = pModule->FullPathName + pModule->OffsetToFileName;
// 处理模块信息
}
// 释放 PsLoadedModuleList
ExFreePool(pModuleList);
```
阅读全文