ZwQuerySystemInformation 学习

https://blog.csdn.net/suppercoder/article/details/9341941 这是一篇介绍分别在Ring0 和 Ring3 下是使用ZwQuerySystemInformation 函数来获取一些系统信息的函数。比如可以获取进程表和句柄表。可以参考看看。

//声明ZwQueryAyatemInformation
NTSTATUS ZwQuerySystemInformation(
    IN ULONG SystemInformationClass,  //处理进程信息,只需要处理类别为5的即可
    OUT PVOID SystemInformation,
    IN ULONG SystemInformationLength,
    OUT PULONG ReturnLength
);

由函数中 IN OUT 即可知哪些是输入参数哪些是输出参数,

第一个参数 由字面意思即 系统信息类别,我们这里只关心进程信息(其宏定义为5),
第二个参数 存储返回结果信息的缓冲区
第三个参数 是 第二个缓冲区的大小
第四个参数是 实际返回消息的大小

下面给出ZwQuerySystemInformation 使用代码,以及注释。

#include "stdafx.h"
#include <windows.h>
#include <intrin.h>


#define STATUS_INFO_LENGTH_MISMATCH 0xc0000004  // 一个报错返回值。
#define nullptr NULL

/*
* 下面是一个枚举结构,每一个枚举值对应一类系统信息,
* 比如 SystemPerformanceInformation 代表所有的进程信息。
*/

typedef enum _SYSTEM_INFORMATION_CLASS     //    Q S
{
    SystemBasicInformation,                // 00 Y N
    SystemProcessorInformation,            // 01 Y N
    SystemPerformanceInformation,          // 02 Y N
    SystemTimeOfDayInformation,            // 03 Y N
    SystemNotImplemented1,                 // 04 Y N
    SystemProcessesAndThreadsInformation,  // 05 Y N
    SystemCallCounts,                      // 06 Y N
    SystemConfigurationInformation,        // 07 Y N
    SystemProcessorTimes,                  // 08 Y N
    SystemGlobalFlag,                      // 09 Y Y
    SystemNotImplemented2,                 // 10 Y N
    SystemModuleInformation,               // 11 Y N
    SystemLockInformation,                 // 12 Y N
    SystemNotImplemented3,             
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值