从所周知,在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函数:
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID);
第二个参数是请求信息的类型,这个参数可以有许多个值,本文例子中将用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;
分享到:
相关推荐
得到指定进程所占用的句柄数handle_NtQueryInformationProcess第二个参数为20.zip
如何得到其它进程的启动命令行参数.vc这个程序可以得到其他进程的命令行参数_NtQueryInformationProcess第二个参数为0
获取所有进程的映像路径以及命令行参数
1.进程列表:包括进程的各种信息,如线程个数、CPU占用率、内存使用大小、进程优先级、exe文件信息…… 2.系统信息:如CPU曲线、内存曲线、PF曲线…… 3.DLL列表 4.句柄列表(有错误) 5.用户空间情况 6.设置进程...
易语言汇编反调试源码,汇编反调试,是否被调试,是否被调试1,是否被调试2,GetCurrentProcessId,NtSetDebugFilterState,OpenProcess,ZwQueryInformationProcess
NtQuerySystemInformation获得某进程某时刻占用的CPU、内存、虚拟内存、句柄数等信息.zip
使用NtQueryInformationProcess获取进程的完整路径
mhook库是C++中的一个hook库,小巧健壮,内置反汇编引擎,能够根据实际情况动态调整hook方式。 支持X86 X64 含Demo VS2010,(但易语言不支持x64)(亲测火山PC可用x64!!) 接口简单,功能强大,支持32位和...里面包含使用示例
不要来这里打开与安装有关的问题,因错误检查0x109而崩溃:CRITICAL_STRUCTURE_CORRUPTION或有关如何禁用PatchGuard的问题。 我将永久禁止您使用问题...ProcessDebugFlags(NtQueryInformationProcess) ProcessDeb
8. DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 12 9. SetUnhandledExceptionFilter/ Debugger Interrupts 14 10. Trap Flag单步标志异常 16 11. SeDebugPrivilege 进程权限 16 12. Debug...
8. DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 11 9. SetUnhandledExceptionFilter/ Debugger Interrupts 13 10. Trap Flag单步标志异常 15 11. SeDebugPrivilege 进程权限 16 12. Debug...
易语言真实API模块源码,真实API模块,BaseSetLastNTError,调用_KiFastSystemCall,备份_调用_KiFastSystemCall,调用_NtQueryInformationProcess,调用_NtSetInformationThread,调用_NtDeviceIoControlFile,调用_...
易语言非真实API模块源码,非真实API模块,调用_NtQueryInformationProcess,调用_NtSetInformationThread,调用_NtDeviceIoControlFile,调用_NtFsControlFile,调用_NtWaitForSingleObject,调用_NtSetInformationFile,...
8. DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 11 9. SetUnhandledExceptionFilter/ Debugger Interrupts 13 10. Trap Flag单步标志异常 15 11. SeDebugPrivilege 进程权限 16 12. Debug...
1. IsDebuggerPresent 2. PEB(进程环境块) 3. 软件断点防止 ...4. CheckRemoteDebuggerPresent和NtQueryInformationProcess 5:参考于https://www.4hou.com/web/15211.html,介绍的调试和反调试方法
8. DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 11 9. SetUnhandledExceptionFilter/ Debugger Interrupts 13 10. Trap Flag单步标志异常 15 11. SeDebugPrivilege 进程权限 16 12. Debug...
- NtQueryInformationProcess (ProcessDebugPort) - NtQueryInformationProcess (ProcessDebugFlags) - NtQueryInformationProcess (ProcessDebugObject) - NtSetInformationThread (HideThreadFromDebugger) - ...
8. DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 11 9. SetUnhandledExceptionFilter/ Debugger Interrupts 13 10. Trap Flag单步标志异常 15 11. SeDebugPrivilege 进程权限 16 12. Debug...
8. DebugPort: CheckRemoteDebuggerPresent()/NtQueryInformationProcess() 11 9. SetUnhandledExceptionFilter/ Debugger Interrupts 13 10. Trap Flag单步标志异常 15 11. SeDebugPrivilege 进程权限 16 12. Debug...
[+] NtQueryInformationProcess. [+] SetUnhandledExceptionFilter. [+] OpenProcess. [+] Invalid Handle. [+] NtSetInformationThread. [+] RDTSC. [+] NtYieldExecution. [+] NtQueryObject. [+] ...