OldSchoolHack

Register / Login English

Fragen zu DirectX 11 Hooking

icon Thread: Fragen zu DirectX 11 Hooking

Join Date: Jul 2011

Posts: 3

Hey OSH,
Ich habe angefangen mich mit DX11 zu beschäftigen.
Habe mir bis jetzt die Sample Tutorials aus der SDK durchgelesen & vieles davon verstanden.
Zu 100% blicke ich leider noch nicht durch. Deswegen meine Fragen:

Ich glaube das ich D3D11CreateDeviceAndSwapChain hooken muss (MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ff476083%28v=vs.85%29.aspx ) Dieses wird nämlich in allen Samples aufgerufen.
Dieses Funktioniert auch nicht.Die Addresse finde ich mit GetProcAddress in der DX11 Dll.

Allerdings kann ich nichts zeichnen ,ich habe versucht wie in den Samples "ClearRenderTargetView" zu benutzen.Dieses Funktioniert aber nicht,und beim hook versuch Crasht es.

Dazu frage ich mich wie ich Text Rendere ,weil ich den Sample Tutorials nichts zu finden ist.

Über ein paar Infos und hilfestellungen würde ich mich sehr freuen.

//EDIT CODE:
TEXT Code:
  1.  
  2.  
  3. typedef HRESULT (WINAPI* __stdcall tD3D11CreateDeviceAndSwapChain)(IDXGIAdapter *pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, const D3D_FEATURE_LEVEL *pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, IDXGISwapChain* ppSwapChain, ID3D11Device* ppDevice, D3D_FEATURE_LEVEL *pFeatureLevel, ID3D11DeviceContext **ppImmediateContext);
  4. tD3D11CreateDeviceAndSwapChain pD3D11CreateDeviceAndSwapChain = NULL;
  5.  
  6.  
  7. HRESULT WINAPI D3D11CreateDeviceAndSwapChain_Hook(IDXGIAdapter *pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, const D3D_FEATURE_LEVEL *pFeatureLevels, UINT FeatureLevels, UINT SDKVersion, const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, IDXGISwapChain* ppSwapChain, ID3D11Device* ppDevice, D3D_FEATURE_LEVEL *pFeatureLevel, ID3D11DeviceContext **ppImmediateContext)
  8. {
  9. Helper->WriteLog("D3D11 => Hook working.");
  10.  
  11.  
  12. return pD3D11CreateDeviceAndSwapChain(pAdapter, DriverType, Software, Flags, pFeatureLevels, FeatureLevels, SDKVersion, pSwapChainDesc, ppSwapChain, ppDevice, pFeatureLevel, ppImmediateContext);
  13. }
  14.  
  15.  
  16.  
  17. DWORD WINAPI Thread(LPVOID)
  18. {
  19. DWORD dwD3D11 = NULL;
  20. while( !dwD3D11 )
  21. {
  22. dwD3D11 = (DWORD)GetModuleHandle( L"d3d11.dll" );
  23. Sleep( 250 );
  24.  
  25. }
  26. BYTE *C_Device =( BYTE* ) GetProcAddress( (HMODULE)dwD3D11, "D3D11CreateDeviceAndSwapChain" );
  27. pD3D11CreateDeviceAndSwapChain = ( tD3D11CreateDeviceAndSwapChain ) Hook->DetourCreate(C_Device, ( BYTE* )D3D11CreateDeviceAndSwapChain_Hook, 0);
  28. if(!pD3D11CreateDeviceAndSwapChain){
  29. MessageBoxA(0,"Hooking: D3D11CreateDeviceAndSwapChain Failed.Proccess get closed.","Error 15",MB_OK);
  30. ExitProcess(0);
  31. }
  32. return 0;
  33. }
  34.  
  35.  
  36.  

Mein gehookter bereich wird nicht aufgerufen.