Funktions-Hook
-
Okay.. hab da ein kleines Problemchen wo mir sicher jemand von euch helfen kann, (hoff ich)
Also:Ich versuche gerade eine Art Hook für den Internet Explorer zu machen. Es soll ihn davon abhalten andere Prozesse zu starten. Hatte schon mehrere Varianten ausprobiert und bin nun auf folgende Idee gekommen...
Kernel32.dll kopieren und die Funktion mit einer anderen ersetzen dann in das Verzeichniss der anwendung (internet explorer) und fertig... Tja hab gar ne Testapp gemacht die eine dll namens a.dll läd und wieder entlädt, fertig.push ebp mov ebp, esp sub esp,0x8 mov dword ptr[esp], 0x6C642E61 mov dword ptr[esp+4], 0x6C mov eax, esp push eax call dword ptr[LoadLibrary] push eax call dword ptr[FreeLibrary] leave ret 0x0c(Sieht ungefähr so aus)
Nur leider ist ja die kernel meistens bis eigentlich immer (
) geladen und daher läd er irgendwie nicht meine fake-kernel. wenn ich sie dann mit na test app von mir lade also den pfad ganz genau angebe dann funktioniert natürlich alles! Also der code funktioniert...
Allerdings weiß ich jetzt nicht wie ich es schaffen kann für den Internet Explorer die fake kernel laden zu lassen...
Und ich will nicht an dem iexxplorer herumfummeln denn das soll dann auch für andere anwendungen verwendbar sein...Die Idee von dem laden wenns im gleichen verzeichniss ist hab ich übrigens von dem viel gehassten wallhack von CS. Aber bevor hier ein flameware ausbricht 1. spiel ich kein cs in net und 2. nicht mit wallhack; nur mal ausprobiert wie ich ihn von nehm freund bekommen hab (der das spiel ohne wallhack übrigens ziemlich drauf hat...). Tja scheint so als wäre die opengl dll noch nicht geladen da man ja meist nur eine opengl anwendung laufen hat und wird daher neu geladen aber die kernel ist ja schon geladen und wird anscheinend daher nicht neu geladen... kann ich vielleicht irgendwas andres in der dll verändern damit er die schon geladene richtige nicht mit meiner fake-kernel in verbindung bringt und die fake-kernel neu für den prozess läd??
Ich hoffe irgendjemand hat verstanden was ich hier versucht habe zu erklären...
cu Manuelh87
-
Stichwort: KernelHook
Schau dir mal an, wie ein Function Hook funktioniert. Dazu muss man nicht die DLL kopieren und abändern.
-
Hey danke!
Hatte zwar schon ne Methode ausprobiert wo der Import Table modifiziert wird aber auf kernel modus bin ich nicht gekommen...
Weiß nur nicht ob ich mir da leichter du... aber trotzdem sicherlich ne bessere Variante... Werd ich mir ansehen..Andre frage.. nur so am Rande kann man nicht z.b. die fake dll in C:\Windows geben und sie wird dann anstatt der richtigen in C:\Windows\system32 geladen?? da ja vielleicht der C:\windows Pfad vor dem system32 steht... oder vielleicht ein andrer Ordner?
na werd ich mal testen...
Ansonsten seh ich mir mal das mit dem Kernel Hook an! Das wäre auf jeden fall die beste methode... aber sicher auch die komplizierteste! (Bis jetzt war ich ja nur im User mode...)Danke nochmal
cu Manuelh87
-
Soweit ich mich erinnere gibt es in der Registry wohl dieverse Einstellunsgmöglichkeiten, was DLLs betrifft, die beim Starten eines Prozesses in diesen geladen werden. Auch das lässt viel PLatz für viele lustige Spielereien.
-
Ja werd mal schauen... andere Frage:
Könnte man auch so vorgehen?
Addresse der Funktion ermitteln mittels GetProcAddress oder wenns so nicht geht halt fix heraussuchen und dann die Codepage herausfinden in der die dll ist und dann die Flags ändern auf writeable und das reinschreiben... oder so?
naja so wichtig ist's ja eh nicht aber hab da so ein paar sachen gelesen über Sicherheitsprogramme die vor overflows schützen sollen (Exploits eben) und das klang schon sehr interessant... unter anderem haben die auch so Kernel Hooks in die wichtigsten funktionen gemacht.Nochwas... also mich interessieren da vorallem Hooks die das ganze system betreffen und nicht nur einen Prozess deshalb fällt auch die Import Table methode aus... Wie gesagt ist aber nicht soooo wichtig... sollte mich eh eher um meine hinkende Bone Animation kümmern...
Trotzdem danke
cu Manuel
-
Schau dir einfach mal die Detours Lib von Microsoft an.