NtQueryInformationProcess顾名思义就是取进程信息 他是属于ntdll.dll里面的一个未公开的api函数
此函数的原型如下
NTSYSAPI NTSTATUS NTAPI NtQueryInformationProcess (
IN HANDLE ProcessHandle, // 进程的句柄
IN PROCESSINFOCLASS InformationClass, // 信息类型
OUT PVOID ProcessInformation, // 缓冲指针
IN ULONG ProcessInformationLength, // 以字节为单位的缓冲大小
OUT PULONG ReturnLength OPTIONAL // 写入缓冲的字节数
);
第一个参数 进程句柄必须是openprocess以PROCESS_QUERY_INFORMATION模式取得的
第二个参数是信息类型 根据msdn里面查阅 可以取以下值(以下中文是随口翻译如有纰漏欢迎指出)
进程基础信息 ProcessBasicInformation值 0
进程调试端口 ProcessDebugPort 值7
64位进程信息ProcessWow64Information 值26
进程印象文件名ProcessImageFileName值27
ProcessBreakOnTermination29 未知
这里将用 ProcessBasicInformation 做例子
如果第二个参数为 ProcessBasicInformation
则第三个参数必须指向一个指针的结构为 PROCESS_BASIC_INFORMATION:
typedef struct
{
DWORD ExitStatus; // 接收进程终止状态
DWORD PebBaseAddress; // 接收进程环境块地址
DWORD AffinityMask; // 接收进程关联掩码
DWORD BasePriority; // 接收进程的优先级类
ULONG UniqueProcessId; // 接收进程ID
ULONG InheritedFromUniqueProcessId; //接收父进程ID
} PROCESS_BASIC_INFORMATION;
第四个参数 InheritedFromUniqueProcessId 则就是接收父进程id
例子网上太多就不一一举例了
来源千明论坛
797K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0y4V1y4e0k6Q4x3X3g2F1k6i4b7`.
[培训]科锐逆向工程师培训第53期2025年7月8日开班!