Quote:
Originally posted by neji@Nov 13 2006, 14:39
aber dann hätte man ja auch wieder nen extra Programm dass erst den hook setzen müsste.
Oder hab ich maybelline falsch verstanden?
|
Es war mehr eine Ergänzung zu deinen Vorschlägen.
Man muss auf jeden Fall eine Dll in den Zielprozess laden. Das einfachste Szenario wäre ein normaler Loader, aber Marie wollte zur Laufzeit Einstellungen vornehmen können (ohne den Prozess mit einem Loader zu starten). Wenn ich mich richtig entsinne, wird bei einem globalen Hook (SetWindowHookEx) die Dll geladen _bevor_ die Kontrolle an die eigentliche Exe im Zielprozess geht (und somit vor irgendwelchen DirectX API Aufrufen). Damit würde die Dll auch automatisch in jeden neuen Prozess geladen werden. Hook(s) in der DirectX Dll (z. B. d3d9.dll) müssen sowieso gesetzt werden, da kommt man kaum drumherum.
Ich habe in einem Test den Interface Pointer (das Wort "handle" wäre hier fehl am Platz) zur Laufzeit rekonstruiert. Das basiert auf Reverse Engineering und ich bin mir nicht sicher, ob ich alle Fehlerquellen und Möglichkeiten abgedeckt habe. Das wäre mehr "Jugend forscht" als eine ernsthafte Lösung.