2016-05-25 22 views
9

benden önce de yazılmıştır bazı kodları "gözden" am ve ben hakkında bazı şüphelerim var bir desen fark ediyorum: o işaretçisi ile saklanır ve daha sonra karşılaştırmalar yapılırPEPROCESS değerlerini karşılaştırmak tamam mı?

PsGetCurrentProcess() işlevin sonucu (Bu, EPROCESS yapısına bir işaretçidir. Ancak, belgede, bu işlevin her seferinde aynı işaretçiyi döndürmesi garanti edildiğini öne süren hiçbir şey bulamıyorum. Benim için daha da şaşırtıcı olan şey, bu kodun uzun süredir çalışıyor olmasıdır.

Bu bir hata mıdır? Bu mantığı değiştirmenizi öneririz. İşlem Kimliklerini (PsGetProcessId Kullanımı) karşılaştırarak?

+0

Yorum yapmadan önce bir reddetme yaşıyorum. Bunu oldukça rahatsız edici buluyorum - birisi bunun neden iyi bir soru olmadığını veya eleştiri vermediğini açıklamak isterse, lütfen bunu yapın, site kuralları tarafından şiddetle tavsiye edilir. –

+3

Çok iyi bir hata olabilir. Ben de senin sorununun iyi olduğunu düşünüyorum. Gördüğüm en iyi şeylerden biri de bu yüzden aşağılamayı anlamıyorum. –

+0

"* karşılaştırmalar bu sonuçla elde edildi *" işaretçisinde ** değer ** döndü? – alk

cevap

4

Evet, bu oldukça doğru. EPROCESS belgesinin belgelenmesi, işlem başına böyle bir nesnenin ve buna göre PEPROCESS noktasının bulunduğunu açıkça belirtir. Bu, PsGetCurrentProcess()'un veEPROCESS işaretçilerine 'a dönmediği anlamına gelir. Ve iki işaretçi aynı nesneyi işaret ederse eşittir.

+0

Cevabınız için teşekkürler. Bunun için kesin bir kaynak sağlayabilir misiniz? Belgelerin bir şekilde önerdiği gibi (** a ** yerine ** yerine **), bu konuda başka bir şey bulamıyorum. –

+0

Kendinden bariz, açık bir şekilde belgelenmesi mümkün değildir. –

+1

(Bunu açıklığa kavuşturmak gerekirse: Bu, Microsoft'un kendinden emin olduğunu düşündüğü ve açık bir şekilde belgelemeyi düşünmediğim bir şeydir. Bunu belgelememeliydim. saçma bir soru.) –

İlgili konular