Generic Directx Tools?

11/09/2006 23:16 Maybe It's Maybelline#1
Gibt es eigentlich ein Tool womit man diverse funktionen für Dx8/9 Programme Einstellen kann? Damit meine ich Funktionen wie z.B das alle Texturen nichtmehr geladen werden etc. Am liebsten wäre mir dann, wenn das Tool automatisch die Prozesse hookt oder sich selbst im System Verzeichniss austauscht.
11/10/2006 20:30 Leonino#2
[Only registered and activated users can see links. Click Here To Register...]

ich glaube das entspricht deinen vorstellungen
11/11/2006 02:07 Maybe It's Maybelline#3
Nein nicht ganz, ich suche etwas mir mehr Einstellungen und außerdem ein tool was sich automatisch den gewünschten Prozess hookt OHNE die Datei zu starten.
11/11/2006 09:17 rEdoX#4
Vieleicht bietet dir cheatengine die funktionen die du brauchst.
[Only registered and activated users can see links. Click Here To Register...]


grüße redox
11/11/2006 13:33 Maybe It's Maybelline#5
Leider nicht, zumal ich keine private CE kenne die mit dx9 funktioniert oder/und die das Spiel erst hookt wenn ICH es anmache und nicht umgekehrt.
11/11/2006 13:42 Lowfyr#6
bin zwar nicht sicher aber sowas geht soweit ich weiß nur per wrapper, musst wohl oder übel selbst coden, oder einen von nem standard cs d3d hack nehmen

wenn der hack per crc die texturen ändert wirds nicht in deinem programm funktionieren
11/13/2006 05:32 emjay#7
ich denke ein so allgemeines tool gibts nicht (aber ka hab eher weniger mit directx gemacht). falls du directx hooken willst und deine gewünschten features selber adden willst, wird dir dieses tool sicherlich weiterhelfen

[Only registered and activated users can see links. Click Here To Register...]
11/13/2006 12:27 neji#8
Es gibt in der Registry einen Key der eine angegebene DLL in jeden Prozess automatisch lädt

HKLM\Software\Microsoft \Windows\CurrentVersion\Windows&#09 2;AppInit_DLLs
glaub ich.

So kannste deine Hook DLL automatisch laden lassen ohne extra Programm...

Eine zweite Möglichkeit wäre eben wie Lowy schon sagte ein Wrapper der directx dll.
Wenn du die ins Programmverzeichnis selber legst, dann wird immer diese (dank loadlibrary :) ) vor der im system32 Verzeichnis geladen.
11/13/2006 12:36 Maybe It's Maybelline#9
Danke Neji & emjay, sowas hab ich gesucht. :)

Leider wollte ich eigentlich einen wrapper vermeiden weil ich doch ziemlich experiementierfreudig und unsicher bin und da nervt das ständige kompilieren und ausprobieren.
11/13/2006 14:18 SilonVier#10
SetWindowHookEx: [Only registered and activated users can see links. Click Here To Register...]
11/13/2006 14:39 neji#11
Quote:
Originally posted by SilonVier@Nov 13 2006, 14:18
SetWindowHookEx: [Only registered and activated users can see links. Click Here To Register...]
aber dann hätte man ja auch wieder nen extra Programm dass erst den hook setzen müsste.
Oder hab ich maybelline falsch verstanden?
11/13/2006 14:50 Maybe It's Maybelline#12
Quote:
Originally posted by neji+Nov 13 2006, 14:39--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (neji @ Nov 13 2006, 14:39)</td></tr><tr><td id='QUOTE'> <!--QuoteBegin--SilonVier@Nov 13 2006, 14:18
SetWindowHookEx: [Only registered and activated users can see links. Click Here To Register...]
aber dann hätte man ja auch wieder nen extra Programm dass erst den hook setzen müsste.
Oder hab ich maybelline falsch verstanden? [/b][/quote]
Nein.
11/13/2006 15:14 SilonVier#13
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.
11/13/2006 16:59 neji#14
Quote:
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).
ich hab den Artikel oben nicht gelesen aber liege ich richtig, dass per SetWindowsHookEx z.b. ein WH_GETMESSAGE Hook gesetzt wird, in dessen Callbackfunktion dann die DLL geladen wird?

Dann würde ja wahrscheinlich per LoadLibrary die DLL geladen und im DLL_PROCESS_ATTACH die Hooks gesetzt werden. Aber weisst du sicher, dass diese Aufrufe (welche ja teilweise auch API's sind, vor irgendwelchen API's ausgeführt wird, die das Programm selber ausführt?