Ich versuche eine undokumentierte Funktion namens PsGetContextThread zu verwenden, um den Kontext eines Usermode-Threads von einem Treiber abzurufen. Ich weiß, dass dies von usermode möglich ist, aber ich habe meine Gründe dafür vom Kernel und das ist nicht verhandelbar, also bitte nicht ablenken. Jetzt zurück zum Thema, der Code unten, wenn debugged enthält einen gültigen Thread und alles sieht gut aus, aber es gibt ungültige mit Fehlercode C0000005 zurück, die ACCESS_VIOLATION ist, aber ich weiß nicht, wie dieser Code das auslösen könnte und würde einige Hilfe zu schätzen wissen dies aus, da ich schon eine ganze Weile hier feststecke.PsGetContextThread gibt C0000005 (ACCESS_VIOLATION) zurück
Wenn jemand weiß, was als nächstes zu versuchen oder Anregungen, bitte posten Sie unten.
Nur um zu verstehen, was Sie tun: Sie verwenden eine ** undokumentierte ** Funktion, die vom ** Benutzer ** -Modus, ** Kernel ** -Modus aufgerufen werden soll. Und Sie fragen sich, warum es nicht funktioniert? Merken Sie etwas? – Olaf
@Olaf Sie falsch liegen, PsGetContextThread soll nicht von usermode aufgerufen werden ... sein Teil des Kernels exportiert und kann von einem Treiber aufgerufen werden. der Zeiger auf die Funktion ist gültig, es ist der Aufruf selbst, der ACCESS_VIOLATION in der Statusvariablen – Paze
zurückgibt. Ich vermute, das Problem ist, dass Sie eine Kernelmodus-Adresse '& context' übergeben, aber 'UserMode' angeben. Wenn 'UserMode' angegeben wird, prüft' PsGetContextThread' zuerst, dass '& context' ein gültiger Benutzermoduszeiger ist. Versuchen Sie stattdessen 'KernelMode' anzugeben. –