ReadProcessMemory - Ablauf
-
Wenn du es ganz ausschalten willst - jein.
Dann brauchst du einen Treiber der systemweit alle anderen Programme injected.
Damit Verbunden auch einen Treiber für 64 Bit Systeme.Alle Hooks reihen sich in einer Schlange, sind zufällig Hooks einer zweiten App vor deinem können sie trotzdem aggieren, allerdings ein einfaches Program ohne weiteren Hook wäre blockiert.
-
Also ich würde erstmals vom einfachsten Fall ausgehen, dass die Funktion noch nicht von einem anderen Prozess gehookt wurde.
Ich könnte doch mit einem Kernel-Mode Treiber die Funktion ZwReadVirtualMemory hooken und so feststellen, ob jemand auf meinen Prozess zugreift? Hab ich das richtig verstanden?@thenoname: Danke für deine Antwort
-
Ich kenne das Vorgehen bei Kernel Mode Treibern und Hooks nicht.
Die SDK's wie Detours und EasyHook machen es aber über diese Methode, allerdings benötigen sie eine Zertifizierung des Kernel Mode Treibers sonst wird dieser unter 64Bit Windows nicht geladen.
Im Endeffekt wird aber auf alle OpenProcessMemory (und Co. wie z.B. OpenProcessMemoryEx) Aufrufe gehooked und dann verglichen ob es dein Prozess ist.
Ist er es gibts eine Liste mit zu blockenden Handles die dann wiederum mit dem Handle vom ReadProcessMemory Hook verglichen werden.
So oder so ähnlich ...
-
Vielleicht hilft dir das hier:
http://www.codeproject.com/Articles/13677/Hooking-the-kernel-directly
Ansonsten wäre das Buch: The rookit arsenal von Bill Blunden ganz interessant für dich und davon dann die neusten Auflage. (Das Buch ist aktuell und nicht so veraltet wie mhhm ja wie hiess das Buch noch -.- ich weiss es nicht mehr aber auf dem Deckblatt war ein Samurai mit einem Schwert.^^ Ich meine das Buch war von Greg Hoguland oder so ähnlich.)
-
subverting the windows kernel
-
tRoppl schrieb:
Also ich würde erstmals vom einfachsten Fall ausgehen, dass die Funktion noch nicht von einem anderen Prozess gehookt wurde.
Ich könnte doch mit einem Kernel-Mode Treiber die Funktion ZwReadVirtualMemory hooken und so feststellen, ob jemand auf meinen Prozess zugreift? Hab ich das richtig verstanden?@thenoname: Danke für deine Antwort
Ja kannst du.
-
thenoname schrieb:
...
Alle Hooks reihen sich in einer Schlange, sind zufällig Hooks einer zweiten App vor deinem können sie trotzdem aggieren, allerdings ein einfaches Program ohne weiteren Hook wäre blockiert.
Dann musst du halt schauen das du am Anfang der liste stehst... oder mit einem anderen Trick ein ähnlichen Effekt erzeugst. Es geht alles. Die Frage lautet nur wie... Die Frage lautet grundsätzlich wie!
-
Nekromantie...
-
Martin Richter schrieb:
Nekromantie...
Ja ich weiss, aber ich kann im doch nicht tonnenweise Material in das Hirn pressen wenn er nicht mal einen funktionierenden Treiber am Start hat. Bis dahin ist es schon ein langer und steiniger weg, wenn man vorher noch nie was im Kernelmode gemacht hat.
-
Wieso einen Treiber du kannst auch im Usermode über SetWindowsHookEx in alle Prozesse eine DLL injizieren, die die gewünschte Funktion in der Ntdll hookt. (ich habe z.B mal ZwQueryDirectoryFile gehookt).
-
gaaaaaaaaaaaaaaaaaaaast schrieb:
Wieso einen Treiber du kannst auch im Usermode über SetWindowsHookEx in alle Prozesse eine DLL injizieren, die die gewünschte Funktion in der Ntdll hookt. (ich habe z.B mal ZwQueryDirectoryFile gehookt).
Natürlich geht das, doch wir sprachen noch von was anderem...