2013-01-17 170 views
2

我碰到一个奇怪的问题:为什么PsGetCurrentProcessId()返回null?

在“系统”进程的线程,我叫PsGetCurrentProcessId(),却得到了一个空值。

此外,我检查了线程的_CLIENT_ID,发现UniqueProcess和UniqueThread都为null。

我也检查了当前进程,即'系统'进程,发现它的UniqueProcessId是4,这是正常的。

为什么?

+0

你是什么意思?“我也检查了当前的过程”,即你用什么系统调用这样做?此外,所讨论的线程来自哪里,即当您调用PsGetCurrentProcessId时,您处于什么环境? –

+0

我用WinDBG检查那些。 – xmllmx

+0

您是如何确定该线程的“当前进程”是系统进程的? –

回答

1

系统进程ID是一个非常不错的“黑客”,因此多个工具(如ProcExp,windbg)不需要特殊情况下内核线程或空闲函数调度程序。

如果你是一个内核唯一的线程,你没有关联的进程(除非你自己攻击一个)。