ZwQuerySystemInformation函数查询SystemModuleInformation

使用ZwQuerySystemInformation函数查询SystemModuleInformation 

在看到两种用法 
第一种: 
ZwQuerySystemInformation(SystemModuleInformation,&n,0,&n); 
PULONG p=new ULONG[n]; 


ZwQuerySystemInformation(SystemModuleInformation,p,n*sizeof*p,0); 

第二种: 
ZwQuerySystemInformation(SystemModuleInformation,&n,0,&n); 
buf = (PULONG)ExAllocatePool(PagedPool,n); 
ZwQuerySystemInformation(SystemModuleInformation,buf, n , 0); 

如果n表示返回信息的字节数的话, 
那么在第一种中分配的是n*4个字节的空间 

 

PSYSTEM_MODULE_INFORMATION头4个字节dwNumberOfModules指示有多少个模块 

( PULONG )buf + 1也没有指向第二个模块,只不过是指针向后移了4个字节

 

typedef struct _SYSTEM_MODULE_INFORMATION {//Information Class 11 
    ULONG Reserved [2]; 
    PVOID Base; 
    ULONG Size; 
    ULONG Flags; 
    USHORT Index; 
    USHORT Unknown; 
    USHORT LoadCount; 
    USHORT ModuleNameOffset; 
    CHAR ImageName [256 ]; 
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; 

typedef struct { 
    ULONG  dwNumberOfModules; 
    SYSTEM_MODULE_INFORMATION  smi; 
} MODULES, *PMODULES; 

这里的PMODULES就是代码中的PSYSTEM_MODULE_INFORMATION

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值