2010-12-02 10 views
2

私はゲームでいくつかの読書をしなければなりません。しかし、競合状態を避けるために、私は自分のASMコードをendsceneに注入する必要があります。ダイレクトX 11でのダイレクトXエンドスコッチのフック

以前私はこのコードを使用しています

uint D3D9_Device; 
D3D9_Device = Memory.Read<uint>(Memory.BaseAddress + Direct3D9__Device); 
D3D9_Device = Memory.Read<uint>(D3D9_Device + Direct3D9__Device__OffsetA); 
D3D9_Device = Memory.Read<uint>(D3D9_Device); 
D3D9_Device = Memory.Read<uint>(D3D9_Device + Direct3D9__Device__OffsetB); 

DX9デバイスにアクセスし、逆にオフセットを使用してendsceneを見つけるために。

しかし、Windows 7では、directx 11が強制されます。これは、この読み取りが失敗し、nullオブジェクトを返すことを意味します。

DirectX 11を使用しているときに、ゲームのエンドシーンにどのようにフックを実行することができますか?

答えて

0

GetProcAddressをIATにフックし、D3DCreateを呼び出してデバイスポインタをキャプチャし、そこからVFTableをフックする必要があります。どのようにあなたが逆さまになってthe COM vftable offsets(these are predefined by how COM dlls are build, you need only count up the virtual methods defined in the DX SDK headers, start at 0, then multiply by sizeof(INT_PTR) `を打ち消しても、あなたの読み方が間違っているように見えます(あなたにはあまりにも多くの回帰があります)。

MSDetoursのようなものを試してみてください。COMオブジェクトのフックに関する例があります。 this questionも読んで

関連する問題