我碰到一个奇怪的问题:
在“系统”进程的线程中,我调用了PsGetCurrentProcessId()
,但得到了一个空值。
而且,我检查了线程的_CLIENT_ID,发现UniqueProcess和UniqueThread都是null。
我也检查了当前进程,即“系统”进程,发现它的UniqueProcessId是4,这是正常的。
为什么?
系统进程ID是一个非常不错的“黑客”,因此多个工具(如ProcExp,windbg)不需要特殊情况下内核线程或空闲函数调度程序。
如果你是一个只有内核的线程,那么你就没有关联的进程(除非你自己攻击一个进程)。