Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Hook-Dll funktioniert nicht global. (https://www.delphipraxis.net/88940-hook-dll-funktioniert-nicht-global.html)

Hamburch 23. Mär 2007 11:51


Hook-Dll funktioniert nicht global.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi.
Nach 3 Tagen Arbeit ist es mir nun gelungen einen Api-Hook zu schreiben.
Es gibt aber noch ein Problem.
Wenn ich den Code aus dem Anhang kompiliere, dann geht der Hook auch wunderbar in der testtool.exe aber in anderen .exen leider nicht. Dabei verwende ich SetWindowsHookEx um die Hook-Dll auch in die anderen Processe zu bekommen. Könnte mir jdm sagen, warum es nur in dem einen Prozess geht und in den anderen nicht? So langsam werde ich irre, denn ich sehe den Fehler leider nicht.
Ciao

Olli 24. Mär 2007 17:05

Re: Hook-Dll funktioniert nicht global.
 
Ich weiß nicht, ob's der einzige Fehler ist, aber der ist ziemlich offensichtlich:

Delphi-Quellcode:
          VirtualProtect(base,Size,PAGE_EXECUTE_READWRITE,oldprotec);
          WriteProcessMemory(GetCurrentProcess, base, @NewAddress, Size, geschrieben);
          // NIMN. so nun sollte die Adresse überschrieben sein
          VirtualProtect(base,Size,oldprotec,sinnfrei);
Vielleicht liest du dir vorher nochmal sorgfältig die Doku (sprich das PSDK) durch und entscheidest dich dann für MSDN-Library durchsuchenVirtualProtectEx und die Übergabe des Zielprozeßhandles anstatt MSDN-Library durchsuchenGetCurrentProcess. Ich habe den Code nichtmal ausgepackt, sondern nur in WinRAR schnell angeschaut, also nicht meckern, falls ich noch andere Fehler übersehen habe.

Hamburch 25. Mär 2007 12:51

Re: Hook-Dll funktioniert nicht global.
 
Ich hatte mir das Ganze eigentlich so vorgestellt, dass die DLL in jeden Process geladen wir und dann dort die entsprechenden Änderungen vornimmt. Deshalb dachte ich mir, dass VirtualProtect reicht.
WriteProcessMemory mit GetCurrentProcess als Parameter habe ich geschrieben, da ich ja nur in dem Process schreiben möchte, in den die DLL geladen wurden.
Mfg,
Hamburch

Olli 25. Mär 2007 14:33

Re: Hook-Dll funktioniert nicht global.
 
Verstehe. Hast du mit ListDLLs von Sysinternals mal überprüft, ob du das erste Ziel bereits erreichst.

Hamburch 25. Mär 2007 18:41

Re: Hook-Dll funktioniert nicht global.
 
Autsch!
Die Dll ist nur in meinem testtool.exe geladen und leider nicht global.
AHHHH ich hatte vergessen SetWindowsHookEx(WH_GETMESSAGE, @GetMsgProc, HInstance, 0); auf zu rufen!
Sorry, dass ich deine Zeit verschwendet habe.
Aber das der Fehler so simpel ist, hätte ich nie gedacht.
Ich habe so ziemlich alles andere für möglich gehalten.
Ciao

Remko 27. Mär 2007 20:18

Re: Hook-Dll funktioniert nicht global.
 
Can you post your complete, working sample?

sh17 27. Mär 2007 20:25

Re: Hook-Dll funktioniert nicht global.
 
Ich glaub, der posted hier nix mehr - ehemaliger Benutzer

Remko 27. Mär 2007 20:27

Re: Hook-Dll funktioniert nicht global.
 
Oops das hatte ich nicht gesehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz