(转)NtQueryInformationProcess用法
2013-01-08 10:33
441 查看
http://blog.csdn.net/yiyefangzhou24/article/details/6242459
从所周知,在Windows NT/2000系统的API黑洞之一便是NTDLL.DLL,此DLL包含了许多未公开的API函数。本文将列举一、二,并以如何获取任何指定进程的父进程ID为例作为示范。
NTDLL.DLL中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝到某个缓冲。其原型如下:
第一个参数是希望操作的进程句柄,这个句柄必须以PROCESS_QUERY_INFORMATION模式存取。为了取得一个句柄,我们必须用OpenProcess函数
第二个参数是请求信息的类型,这个参数可以有许多个值,本文例子中将用ProcessBasicInformation (值为0)。
因此,如果第二个参数是ProcessBasicInformation的话,则第三个参数必须为一个指针指向结构PROCESS_BASIC_INFORMATION:
这个结构的最后一个参数是InheritedFromUniqueProcessId,它就是我们所要的东西。
从所周知,在Windows NT/2000系统的API黑洞之一便是NTDLL.DLL,此DLL包含了许多未公开的API函数。本文将列举一、二,并以如何获取任何指定进程的父进程ID为例作为示范。
NTDLL.DLL中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝到某个缓冲。其原型如下:
NTSYSAPI NTSTATUS NTAPI NtQueryInformationProcess ( IN HANDLE ProcessHandle, // 进程句柄 IN PROCESSINFOCLASS InformationClass, // 信息类型 OUT PVOID ProcessInformation, // 缓冲指针 IN ULONG ProcessInformationLength, // 以字节为单位的缓冲大小 OUT PULONG ReturnLength OPTIONAL // 写入缓冲的字节数 );
第一个参数是希望操作的进程句柄,这个句柄必须以PROCESS_QUERY_INFORMATION模式存取。为了取得一个句柄,我们必须用OpenProcess函数
第二个参数是请求信息的类型,这个参数可以有许多个值,本文例子中将用ProcessBasicInformation (值为0)。
因此,如果第二个参数是ProcessBasicInformation的话,则第三个参数必须为一个指针指向结构PROCESS_BASIC_INFORMATION:
typedef struct { DWORD ExitStatus; // 接收进程终止状态 DWORD PebBaseAddress; // 接收进程环境块地址 DWORD AffinityMask; // 接收进程关联掩码 DWORD BasePriority; // 接收进程的优先级类 ULONG UniqueProcessId; // 接收进程ID ULONG InheritedFromUniqueProcessId; // 接收父进程ID } PROCESS_BASIC_INFORMATION;
这个结构的最后一个参数是InheritedFromUniqueProcessId,它就是我们所要的东西。
DWORD dwParentPID; LONG status; PROCESS_BASIC_INFORMATION pbi; status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, (PVOID)&pbi, sizeof(PROCESS_BASIC_INFORMATION), NULL); if (!status) dwParentPID = pbi.InheritedFromUniqueProcessId;
相关文章推荐
- NtQueryInformationProcess用法
- NtQueryInformationProcess用法
- NtQueryInformationProcess用法
- DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess()
- 通过NtQueryInformationProcess查找一个进程的父进程
- NtQueryInformationProcess
- delphi R3下 跨进程获取DLL信息 NtQueryInformationProcess
- Detailed Information of Modern Mining Process One
- System.Diagnostics.Process.Start()用法详解
- Ret2Libc 练习(1) -- ZwSetInformationProcess
- 利用NtQuerySystemInformation函数遍历进程,遍历线程,获取线程挂起或运行状态
- jps 报process information unavailable解决办法
- C# OpenProcess用法 .
- 转自“看雪论坛”--NtQuerySystemInformation
- PROCESS_INFORMATION结构体
- NtQuerySystemInformation
- 提升进程权限-OpenProcessToken等函数的用法
- MapPtrToProcess 用法 WINCE驱动分析3 转
- 关于msdn中NtQuerySystemInformation函数说明
- Dynamic CRM 2013学习笔记(三十九)流程2 - 业务流程(Business Process Flows)用法详解