Ist es in Ordnung, PEPROCESS-Werte zu vergleichen?

9

Ich überprüfe einen Code, der vor mir geschrieben wurde, und ich bemerke ein Muster, an dem ich einige Zweifel habe:

Das Ergebnis der Funktion PsGetCurrentProcess() wird gespeichert und dann werden Vergleiche mit diesem Zeiger (der ein Zeiger auf eine EPROCESS struct ist) gemacht. Ich finde jedoch nichts in der Dokumentation, was darauf hindeutet, dass diese Funktion garantiert den gleichen Zeiger jedes Mal zurückgibt. Was mich viel überraschender ist, ist, dass dieser Code anscheinend lange Zeit funktioniert hat.

Ist das ein Fehler, und würden Sie empfehlen, diese Logik z. Vergleichen von Prozess-IDs (mit PsGetProcessId)?

    
K.Steff 25.05.2016, 13:59
quelle

1 Antwort

4

Ja, das ist ziemlich richtig. Die Dokumentation von EPROCESS macht deutlich, dass es pro Prozess ein solches Objekt gibt, auf das PEPROCESS zeigt. Das heißt PsGetCurrentProcess() gibt keinen Zeiger auf ein EPROCESS zurück, sondern auf das EPROCESS . Und zwei Zeiger gleichen sich, wenn sie auf dasselbe Objekt zeigen.

    
MSalters 25.05.2016, 15:15
quelle

Tags und Links