2013-01-17 198 views
2

我碰到一個奇怪的問題:爲什麼PsGetCurrentProcessId()返回null?

在「系統」進程的線程,我叫PsGetCurrentProcessId(),卻得到了一個空值。

此外,我檢查了線程的_CLIENT_ID,發現UniqueProcess和UniqueThread都爲null。

我也檢查了當前進程,即'系統'進程,發現它的UniqueProcessId是4,這是正常的。

爲什麼?

+0

你是什麼意思?「我也檢查了當前的過程」,即你用什麼系統調用這樣做?此外,所討論的線程來自哪裏,即當您調用PsGetCurrentProcessId時,您處於什麼環境? –

+0

我用WinDBG檢查那些。 – xmllmx

+0

您是如何確定該線程的「當前進程」是系統進程的? –

回答

1

系統進程ID是一個非常不錯的「黑客」,因此多個工具(如ProcExp,windbg)不需要特殊情況下內核線程或空閒函數調度程序。

如果你是一個內核唯一的線程,你沒有關聯的進程(除非你自己攻擊一個)。