我正在审核"一些代码在我面前写得很好,而且我注意到了一些我对此有疑问的模式:
存储PsGetCurrentProcess()
函数的结果,然后与该指针(它是指向EPROCESS
结构的指针)进行比较。
但是,我没有在文档中找到任何内容,这表明此函数每次都保证返回相同的指针。更令我惊讶的是,这段代码显然已经工作了很长时间。
这是一个错误,您是否建议将该逻辑更改为例如比较进程ID(使用PsGetProcessId)?
答案 0 :(得分:4)
是的,这非常正确。 EPROCESS
的文档清楚地表明每个进程都有一个这样的对象,并且任何PEPROCESS
指向此进程。这意味着PsGetCurrentProcess()
不会返回指向 EPROCESS
的指针,而是指向 EPROCESS
的指针。如果指针指向同一个对象,则两个指针相等。