AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Direct3D hook

Ein Thema von fortu · begonnen am 22. Mär 2008
Antwort Antwort
fortu

Registriert seit: 22. Mär 2008
1 Beiträge
 
#1

Direct3D hook

  Alt 22. Mär 2008, 00:22
Hi, ich versuche gerade einen Hook zu schreiben für meine Direct3D8-Anwendung. Da die d3d8.dll keine Exports der einzelnen Funktionen hat, muss ich erst über Direct3DCreate8 hooken und dann iwie IDirect3D8 .. dazu weiß ich aber nicht ganz, wie ich das anstellen soll. Wäre schön, wenn ihr mir sagt, wie ich weiter vorgehen soll. Ich poste mal meinen momentanen Code. Leider funktioniert mein Code so auch nicht richtig. Bekomme nen Error vom Beziehen einer Adresse Hoffe ihr könnt mir weiter helfen.
Delphi-Quellcode:
library Project1;

uses
  SysUtils,
  windows,
  GenCodeHook,
  Direct3D8,
  d3dx8,
  funcs in 'funcs.pas';

{$R *.res}


type
  Direct3DCreate8 = function( D3D_SDK_VERSION : cardinal ): IDirect3D8; stdcall;
var
  oDirect3DCreate8 : Direct3DCreate8;
  pIDirect3D8 : IDirect3D8;


//Die neue Funktion
function pDirect3DCreate8( D3D_SDK_VERSION : cardinal ): IDirect3D8; stdcall;
begin
  pIdirect3D8 := oDirect3DCreate8( D3D_SDK_VERSION );
  if pIdirect3D8 <> nil then
    Writelog('Direct3DCreate8 gehookt!');
  result := pIDirect3D8;
end;


procedure dllmain(dwReason: integer); // Wird gecalled, wenn der Prozess die dll lädt / unlädt
var
  module : HMODULE;
begin
  case dwreason of
    1: begin
    // Wenn die dll geladen wurde, alles laden, was benötigt wird

         //Die Adressen aus der D3D8.dll beziehen
         module := GetModuleHandle('D3D8.dll');
         //Detour.
         CreateGenericCodeHook( GetProcAddress(module,pchar('Direct3DCreate8')), @pDirect3DCreate8, @oDirect3DCreate8 );
       end;
    0: begin
    // Wenn die dll wieder entladen wird

         //Die original Funk wieder laden
         RemoveGenericCodeHook(@oDirect3DCreate8);
       end;
  end;
end;

begin
  DLLProc := @DLLMain; // Einsteigspunkt setzen
  DLLMain(1); // DllMain callen
end.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz