一个session对应一个process,但是一个process未必对应一个session.那为什么sessions=(1.1*process+5)?我觉得process应该大于session的数量啊!谁能帮解释一下session和process的关系,他们是否是包含关系?比如proce
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/08 11:13:23
一个session对应一个process,但是一个process未必对应一个session.那为什么sessions=(1.1*process+5)?我觉得process应该大于session的数量啊!谁能帮解释一下session和process的关系,他们是否是包含关系?比如proce
一个session对应一个process,但是一个process未必对应一个session.那为什么sessions=(1.1*process+5)?
我觉得process应该大于session的数量啊!
谁能帮解释一下session和process的关系,他们是否是包含关系?比如process中包含session!一个session是属于一个process的!
一个session对应一个process,但是一个process未必对应一个session.那为什么sessions=(1.1*process+5)?我觉得process应该大于session的数量啊!谁能帮解释一下session和process的关系,他们是否是包含关系?比如proce
这其实并不麻烦,首先要知道,正常启动的进程的父进程是explorer.exe,如果查到父进程不是这个进程的话就可以确定是其他进程引入了本进程,退出就可以了,大概涉及到以下几个API1.先获取自己的进程ID,GetCurrentProcessID()2.获取进程查询句柄,调用OpenProcess()带上PROCESS_QUERY_INFORMATION标志3.调用NtQueryInformationProcess()来查询进程信息4.获取父进程句柄,还是调用OpenProcess()这里使用了OpenProcess的一个未公开功能,不过CSDN上有NTSTATUS WINAPI NtQueryInformationProcess( __in HANDLE ProcessHandle,__in PROCESSINFOCLASSPROCESSINFOCLASS ProcessInformationClass,__out PVOID ProcessInformation,__in ULONG ProcessInformationLength,__out_opt PULONG ReturnLength);这个API位于Ntdll.dll里面,通过引用头文件winternl.h来获取相关的类型定义.当我们得到这个函数后,下一步就需要去了解各个函数参数的意义了,这里我们重点看一下第二个参数 PROCESSINFOCLASS结构体的内容:typedef struct _PROCESS_BASIC_INFORMATION { PVOID Reserved1; PPEB PebBaseAddress; PVOID Reserved2[2]; ULONG_PTR UniqueProcessId; PVOID Reserved3;} PROCESS_BASIC_INFORMATION;这是MSDN里给出的结构体定义.到目前为止,我们还是不知道Parent进程的ID从哪里取.实际上最后一个字段Reserved3就是Parent进程的ID,只要我们将它转换为一个DWORD值即可.