阅读:2576回复:0
如何获得windows任务管理器试图结束任务的进程信息
我现在的目标是拦截任务管理器通过结束任务的方式关闭程序的行为
我已经完成的工作是: 1)发现通过Hook NtRequestWaitReplyPort后,分析参数RequestMessage中的MessageId,可以发现结束任务的行为 2)任务管理器调用NtRequestWaitReplyPort并非直接和期望被结束的程序进行通信,分析参数PortHandle后,发现任务管理器是和csrss.exe通信 现在我没有解决的问题: 还无法从NtRequestWaitReplyPort的输入参数中获取到目标进程的信息 下面是NtRequestWaitReplyPort和相关数据结构的定义 NTSYSAPI NTSTATUS NTAPI NtRequestWaitReplyPort( IN HANDLE PortHandle, IN PLPC_MESSAGE Request, OUT PLPC_MESSAGE IncomingReply ); typedef struct _LPC_MESSAGE { USHORT DataLength; USHORT Length; USHORT MessageType; USHORT DataInfoOffset; CLIENT_ID ClientId; ULONG MessageId; ULONG CallbackId; } LPC_MESSAGE, *PLPC_MESSAGE; typedef struct _LPCP_PORT_OBJECT { struct _LPCP_PORT_OBJECT *ConnectionPort; struct _LPCP_PORT_OBJECT *ConnectedPort; LPCP_PORT_QUEUE MsgQueue; CLIENT_ID Creator; PVOID ClientSectionBase; PVOID ServerSectionBase; PVOID PortContext; PETHREAD ClientThread; SECURITY_QUALITY_OF_SERVICE SecurityQos; SECURITY_CLIENT_CONTEXT StaticSecurity; LIST_ENTRY LpcReplyChainHead; LIST_ENTRY LpcDataInfoChainHead; union { PEPROCESS ServerProcess; PEPROCESS MappingProcess; }; ULONG MaxMessageLength; ULONG MaxConnectionInfoLength; ULONG Flags; KEVENT WaitEvent; } LPCP_PORT_OBJECT, *PLPCP_PORT_OBJECT; 各位牛牛们,帮忙帮忙,多谢啦! |
|