Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

DirectX VTable Hook, warum muss ich reattachen?

  Alt 30. Jan 2013, 13:08
Hey Leute,

ich habe eine kleine DLL geschrieben, welche die DirectX(9) Funktionen Present() und Reset() hookt. Klappt auch alles wunderbar, ist ja keine große Sache. Die Probleme gibt es nun aber, wenn ich z.b. FRAPS oder andere Videoaufnahme-Programme geöffnet habe. Diese Programme hooken ebenfalls benannte Funktionen, sind sich allerdings zu fein vorher meine geänderten Instruktionen zu sichern, oder meinen Hook zu verfolgen. Resultat: Crash!

Nun habe ich über andere Hooking Methoden nachgedacht und wollte mal einen simplen VTable Hook ausprobieren. Diesen anzubringen funktioniert auch sehr gut, allerdings werden meine Änderungen in periodischen (sehr kurzen) Intervallen wieder rückgängig gemacht.

Eine Möglichkeit wäre es meine Hook in einer Endlosschleife neu zu attachen, allerdings sagt mir diese Lösung absolut nicht zu.

Um andere Lösungen zu finden, würde ich gerne verstehen, warum die VTable des IDirect3DDevice9 Interfaces immer wieder neu geschrieben wird. Kann mir hier eventuell jemand genauere Infos geben?

Vielen Dank und viele Grüße
Zacherl
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat