user32.dll MessageBox umleiten

Hey =)

ich bins mal wieder^^

Ich hab ein Problem mit dem Importieren der dlls.

Ich habe eine Fake-User32.dll gemacht, die MessageBoxA abfängt, ändert, und die originale wieder aufruft.

Nun läd das Test-Programm jedoch immer die "richtige" user32.dll und nicht meine (die im gleichen Verzeichnis ist)

Wie schaff ich es, dass meine DLL geladen wird?

Vielen Dank schonmal im Voraus!
EDIT: Hier etwas code
Code:
invoke MessageBox, 0, addr text, addr text, MB_OK ; Originale wird gestertet

invoke LoadLibrary, addr user32;user32.dll => C:\\user32.dll , da ist auch eine Kopie meiner DLL
mov hInstance, eax
invoke GetProcAddress,hInstance, addr MsgBoxA;MessageBoxA
mov run, eax
push 0
push offset text
push offset text
push 0
call run;Funktioniert ! (oh wunder xD)
invoke ExitProcess,0
 
Im Programm DLL namen in "aser32.dll" ändern und die DLL umbenennen.
Deine eigene DLL wird nämlich gar nicht beachtet. Denn DLLs sind "shared" - und USER32.DLL wird relativ früh geladen. Da sie schon einmal geladen wurde, wird sie bei "LoadLibrary" aufruf auch einfach nur eingeblendet und nicht nochmal geladen.
 
Original von CDW
Im Programm DLL namen in "aser32.dll" ändern und die DLL umbenennen.
Deine eigene DLL wird nämlich gar nicht beachtet. Denn DLLs sind "shared" - und USER32.DLL wird relativ früh geladen. Da sie schon einmal geladen wurde, wird sie bei "LoadLibrary" aufruf auch einfach nur eingeblendet und nicht nochmal geladen.

Also hab ich quasi 0 Chance, dass ein (Fremd-)Programm meine DLL Ladet(Wenn diese schon von anderen Programmen in den Speicher geladen wurde)?
 
Naja, sicherlich würde es mit Aufwand (Globalhooks, eigene Treiber usw) gehen. Aber i.R ist das Umbenennen das einfachste.
 
Zurück
Oben