1.函数描述
PsSetCreateProcessNotifyRoutineEx注册的回调原型为:
void PcreateProcessNotifyRoutineEx( PEPROCESS Process, HANDLE ProcessId, PPS_CREATE_NOTIFY_INFO CreateInfo );
参数说明:
参数1、Process :是新进程的EPROCESS指针;
参数2、ProcessId :是新进程的ID;
参数3、CreateInfo:创建信息;创建进程时,该参数不为NULL;进程退出时,该参数为NULL;
2.使用说明
- 参数CreateInfo详细说明:
- ParentProcessId :新进程的父进程ID;
- CreatingThreadId:创建新进程的进程ID和线程ID,注意:创建新进程的进程不一定是父进程(ParentProcessId的文档有说明);
- FileObject :新进程的PFILE_OBJECT;注意:如果成员IsSubsystemProcess为TRUE时,该值可能为NULL;
- ImageFileName :新进程的文件全路径,是DOS路径,但是起始为:\??\。比如:\??\C:\Windows\System32\calc.exe;
- CommandLine :新进程的命令行;可能为NULL;
- 创建时,获取新进程EPROCESS、PID、路径、命令行:
- 回调参数Process为新进程的EPROCESS指针;
- 回调参数ProcessId为新进程的ID;
- 回调参数CreateInfo->ImageFileName为新进程路径;
- 回调参数CreateInfo->CommandLine为新进程命令行;
- 创建时,获取父进程的EPROCESS、PID:
- 调用函数PsGetCurrentProcess获取父进程EPROCESS指针;
- 调用函数PsGetCurrentProcessId获取父进程的ID;
- 退出时,获取退出进程的EPROCESS、PID:
- 回调参数Process为退出进程的EPROCESS指针;
- 回调参数ProcessId为退出进程的ID;
- 退出时,无法获取谁结束进程的EPROCESS、PID:
- PsGetCurrentProcess()都是被结束进程的EPROCESS指针;就是回调参数的EPROCESS指针;