枚举sys模块

发布时间:2026/9/20 1:10:39
枚举sys模块 枚举sys模块在内核中枚举进程的模块时我们主要通过PEB中的_PEB_LDR_DATA中的三个链表来获取进程加载的模块使用这种方法需要临时将当前地址空间切换到对应进程的地址空间因为PEB是在进程虚拟地址空间中的而不是内核地址空间。对于枚举sys模块则没有这种顾虑因为它们都是在内核地址空间中我们直接使用驱动对象的DriverSection字段得到LDR_DATA_TABLE_ENTRY然后遍历即可。下面是示例代码#includentddk.h// 使用默认的 x64 自然对齐8字节即可无需额外指定 packtypedefstruct_LDR_DATA_TABLE_ENTRY{// 0x000LIST_ENTRY InLoadOrderLinks;// 0x010LIST_ENTRY InMemoryOrderLinks;// 0x020LIST_ENTRY InInitializationOrderLinks;// 0x030PVOID DllBase;// 0x038PVOID EntryPoint;// 0x040ULONG SizeOfImage;// 0x044 (x64下从 ULONG(4字节) 过渡到 UNICODE_STRING(8字节对齐) 的天然填充)UCHAR Reserved0[4];// 0x048UNICODE_STRING FullDllName;// 0x058UNICODE_STRING BaseDllName;// 结构体结束于 0x068 之前正好符合你的需求}LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY;voidDriverUnload(PDRIVER_OBJECT pDrvObj){}EXTERN_C NTSTATUSDriverEntry(PDRIVER_OBJECT pDrvObj,PUNICODE_STRING pRegPath){pDrvObj-DriverUnloadDriverUnload;PLDR_DATA_TABLE_ENTRY pLdr(PLDR_DATA_TABLE_ENTRY)pDrvObj-DriverSection;PLDR_DATA_TABLE_ENTRY pCurrentListEntry(PLDR_DATA_TABLE_ENTRY)pLdr-InLoadOrderLinks.Flink;PLDR_DATA_TABLE_ENTRY pModulenullptr;while(pCurrentListEntry!pLdr){pModuleCONTAINING_RECORD(pCurrentListEntry,LDR_DATA_TABLE_ENTRY,InLoadOrderLinks);if(pModule-BaseDllName.Buffer!nullptr){DbgPrintEx(DPFLTR_IHVDRIVER_ID,DPFLTR_INFO_LEVEL,BaseAddr: %p; Size: %lu; Name: %wZ\n,pModule-DllBase,pModule-SizeOfImage,pModule-BaseDllName);}pCurrentListEntry(PLDR_DATA_TABLE_ENTRY)pCurrentListEntry-InLoadOrderLinks.Flink;}returnSTATUS_SUCCESS;}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询