可以比较 PEPROCESS 值吗?
Is it OK to compare PEPROCESS values?
我是 "reviewing" 一些在我之前写得很好的代码,我注意到一个我有一些疑问的模式:
存储 PsGetCurrentProcess()
函数的结果,然后与该指针(指向 EPROCESS
结构的指针)进行比较。
但是,我没有在文档中找到任何内容,这表明此函数每次都保证 return 相同的指针。更令我惊讶的是这段代码显然已经运行了很长时间。
这是一个错误吗?您是否建议将该逻辑更改为例如比较进程 ID(使用 PsGetProcessId)?
是的,这几乎是正确的。 EPROCESS
的文档清楚地表明每个进程有一个这样的对象,任何 PEPROCESS
都指向这一点。这意味着 PsGetCurrentProcess()
不是 return 指向 an EPROCESS
而是指向 the EPROCESS
.如果两个指针指向同一个对象,则它们比较相等。
我是 "reviewing" 一些在我之前写得很好的代码,我注意到一个我有一些疑问的模式:
存储 PsGetCurrentProcess()
函数的结果,然后与该指针(指向 EPROCESS
结构的指针)进行比较。
但是,我没有在文档中找到任何内容,这表明此函数每次都保证 return 相同的指针。更令我惊讶的是这段代码显然已经运行了很长时间。
这是一个错误吗?您是否建议将该逻辑更改为例如比较进程 ID(使用 PsGetProcessId)?
是的,这几乎是正确的。 EPROCESS
的文档清楚地表明每个进程有一个这样的对象,任何 PEPROCESS
都指向这一点。这意味着 PsGetCurrentProcess()
不是 return 指向 an EPROCESS
而是指向 the EPROCESS
.如果两个指针指向同一个对象,则它们比较相等。