Erfahrungen mit D3D9 Hooking?

  • Soweit ich weiß wurde mal ein Basis-Code dafür veröffentlicht.
    Ein Bekannter von mir hatte damals angefangen, ebenfalls ein Plugin für das Anzeigen von externen Bildern ingame zu erstellen, hat das aber relativ früh wieder aufgegeben...kann aber gerne mal fragen, wie weit genau es fertig ist.

  • Klar ist es möglich, aber meine d3d9.dll hat keine Funktion mit EndSecene :(


    EndScene wird nicht exportiert. Man kommt an EndScene mit hilfe des IDirect3DDevice9 Interfaces, welches via IDirect3D9->CreateDevice erstellt wird. Die von der d3d9 dll zur Verfuegung gestellte Direct3DCreate9 Funktion erstellt die zur Erstellung des IDirect3DDevice9 gebrauchte Instanz von IDirect3D9. Hoert sich recht kompliziert an, braeuchte ein wenig Einarbeitung und Arbeit, um eine vollstaendige proxy dll zu erstellen, daher hier zwei bereits fertige Wrapper, die bereits alles was mit dem IDirect3D interface direkt zu tun hat ueber die dll umleiten (es wird nicht alles exportiert, was die original d3d9 exportiert, daher ist bei manchen Spielen es eventuell noetig noch andere Funktionen, wie D3DPERF_BeginEvent, zu exportieren):
    http://mikoweb.eu/index.php?node=28
    http://www.gamedeception.net/t…-Direct3D-StarterKit-v3.0
    Bei dem zweiten muss man einfach nur die Dateien im Wrapper Verzeichnis in das Projekt kopieren, um keinen Injector verwenden zu muessen, also eine funktionierende d3d9.dll zu erstellen. Auf der ersten Seite wird unter Proxy-DLL Concept das Prinzip nochmal naeher erlaeutert.
    Ich empfehle die proxy dll der ersten Seite. Der Code ist ein wenig uebersichtlicher, wie ich finde. Das ist aber geschmackssache.