Opgelost: Hoe De Directx Com Hook Te Repareren

Ik hoop dat deze handleiding je helpt als je ziet waar DirectX com is aangesloten.

[PC-gebruikers] Zeg vaarwel tegen frustrerende computerfouten. Klik hier om te downloaden.

voordat. Aanvullende feedbackstappen. Ervan uitgaande dat u waarschijnlijk weet wat een hook is, haakt het grootste deel van de d3d hook eenvoudigweg in Direct3D-functionaliteit (in wezen DirectX). Ja, de alle gebruikelijke Present en EndScene hooks die je kunt tekenen, maar je moet zeker ook andere functies gebruiken, zoals Reset of CreateDevice.

Ik heb dat lang geleden bedacht, maar deze zou moeten werken voor elk afzonderlijk programma dat DirectX9 gebruikt. U maakt normaal gesproken uw eigen instantie en geniet vervolgens van een specifieke vtable-aanwijzer, waarna daadwerkelijk clients er gewoon verbinding mee maken. Trouwens, je hebt 3.X tijdelijke oplossingen nodig:

//Verschillende typedefinities:typedef HRESULT(WINAPI*oEndScene)D3DDevice);Statisch(lpdirect3ddevice9 oEndScene EndScene;// doe het in een uitvoering voor wat dan ookHMODULE hDLL=GetModuleHandleA("d3d9");LPDIRECT3D9(__stdcall*pDirect3DCreate9)(UINT) = (LPDIRECT3D9(__stdcall*)(UINT))GetProcAddress(hDLL, "Direct3DCreate9");LPDIRECT3D9 pD3D impliceert pDirect3DCreate9(D3D_SDK_VERSION);D3D WEERGAVEMODUS d3ddm;HRESULT hRes betekent pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp, sizeof(d3dpp));d3dpp.Windowed is waar;d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;d3dpp.BackBufferFormat komt overeen met d3ddm.Format;WNDCLASSEX = wc sizeof(WNDCLASSEX),CS_CLASSDC,TempWndProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,("1"),NULL;RegisterClassEx(&wc);HWND hWnd-tactieken CreateWindow(("1"),NULL,WS_OVERLAPPEDWINDOW,100,100,300,300,GetDesktopWindow(),NULL,wc.hInstance,NULL);hRes = pD3D->Apparaat maken(    D3DADAPTER_DEFAULT,    D3DDEVTYPE_HAL,    hWnd,    D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_DISABLE_DRIVER_MANAGEMENT,    &d3dpp, &ppReturnedDeviceInterface);pD3D->Release();DestroyWindow(hWnd);als (pD3D == NULL)    // printf ("WAARSCHUWING: D3D MISLUKT");    leveren vals;pInterface is (unsigned long*)*((unsigned long*)ppReturnedDeviceInterface);EndScene is gelijk aan (oEndScene) (DWORD)pInterface[42];Start Transactie omzeilen();DetourUpdateThread(GetCurrentThread());DetourAttach(&(PVOID&)EndScene, newEndScene);Een BypassTransaction();
HRESULT WINAPI D3D9Hook::newEndScene(LPDIRECT3DDEVICE9 pDevice)       // Dit is waarschijnlijk waar mensen zich bezighouden met de zaken van het bedrijf    // bel het hele origineel (als we willen)    retourneert EndScene (pDevice);

  • Video’s van primaire elementen downloaden – 26,82 KB
  • Projecttest downloaden – 37.07 KB
  • Presentatie

    Na alle interessante artikelen die ik hier heb gelezen, ben ik er altijd trots op geweest om bij te dragen aan een belangrijk verschil dat nog niet eerder is behandeld.

    Deze site beschrijft het formaat waarin de DirectX/COM interface is opgenomen. Ik heb zojuist de DirectInput-interface gekocht ter illustratie om het gemakkelijker te maken om over interfacefuncties te beschikken.

    Wat betreft de basisprincipes van hooks rechtstreeks op Windows, verwijs ik u naar het uitstekende artikel van Wade Brainerd over de procedure van API-hooks.

    Taak

    Het onderscheppen van een betrouwbare methode van de interface COM vereist een complexere aanpak dan het aansluiten van de aanroepende API. Als de gewenste DLL wordt gecontroleerd, wordt in feite vaak alleen de interface -postfunctie samen met de DLL geëxporteerd. Dus hoe kan iemand de meest gewilde functie krijgen?

    directx com inhaken

    COM is letterlijk een interface, is in wezen een kenmerk van gerelateerde virtuele functiewijzers die aan elkaar zijn gekoppeld. Het enige dat u hoeft te ervaren, is de snelkoppelingen proberen en elk knooppunt wijzigen totdat u eindelijk de sleutel ziet van een functie die iemand mogelijk wil vervangen.

    Stap 1

    Goedgekeurd

    Krijg je het Blue Screen of Death? Reimage lost al deze problemen en meer op. Een software waarmee u een breed scala aan Windows-gerelateerde problemen en problemen kunt oplossen. Het kan gemakkelijk en snel alle Windows-fouten herkennen (inclusief het gevreesde Blue Screen of Death) en passende stappen ondernemen om deze problemen op te lossen. De applicatie detecteert ook bestanden en applicaties die vaak crashen, zodat je hun problemen met een enkele klik kunt oplossen.

  • Stap 1: Download en installeer Reimage
  • Stap 2: Start de applicatie en klik op "Scannen op problemen"
  • Stap 3: Klik op de knop "Alle problemen oplossen" om het reparatieproces te starten

  • Zoals shoppers zouden moeten kunnen ervaren, zijn alleen COM-services om de interface te starten zichtbaar, dus om gestrest te raken over de hook-chain, voeg specifieke DirectInputCreate toe -functie, wat een belangrijke COM -interface is. jij

    Controleer hier of uw DLL is opgenomen in de scanadreskoffietafel (IAT) van Contacten.

    Stap 2

    Wanneer het aanroepende programma DirectInputCreate aanmaakt, wordt u uw functie vaak genoemd, u krijgt een aanwijzer naar een soort aanwijzer die overeenkomt met een aanwijzer naar een virtuele functietabel, die eigenlijk onze interface is directe invoer:

    DECLARE_INTERFACE_(IDirectInputW, IUnknown)        STDMETHOD (QueryInterface) (DIT_ REFIID riid, LPVOID 3.ppvObj) PURE;    STDMETHOD_(ULONG,AddRef)(DIT) PUUR;    STDMETHOD_(ULONG, vrijgeven)(IT) PURE;        STDMETHOD(MaakApparaat)(DEZE_REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;    STDMETHOD(EnumDevices)(THIS_DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;    STDMETHOD(GetDeviceStatus)(DEZE_REFGUID) PURE;    STDMETHOD (RunControlPanel) (THIS_HWND, DWORD) WISSEN;    STDMETHOD(initialisatie)(THIS_HINSTANCE,DWORD) PURE;;

    Stap wat . 0

    Je kunt nu je hele apparaat volledig maken met CreateDevice. Nogmaals, je gaat naar een willekeurig adres van een andere online deelaanwijzertabel die dat apparaat vertegenwoordigt.

    Selecteer de methode die u wilt overschrijven en verander de geïnspecteerde functieaanwijzertabel naar de gewenste locatie om uw functie te plaatsen.

    Stap 4

    Implementatie

    Stap 1

    Om in te haken op een API-functie, kunt u eenvoudig alle Windows API-aanroepen SetWindowsHookEx gebruiken. Dit wordt beschouwd als waar uw bedrijf een benaderingshaak creëert om processen te controleren en deze te conformeren aan het gewenste schema. Nadat je je programma hebt geschetst, moet je de namen onderzoeken van de dll-importbestanden die je wilt vervangen. Aangezien dit type haak is samengesteld voor een doorlopende invoer, is de voorkant waarvoor we verschijnen DINPUT8.DLL. Om het item te vinden, roept u op om door de handvatten te bladeren totdat u uiteindelijk uw familie-DLL vindt.

     ongeacht (pImportDesc->FirstThunk)      PSTR pszImportModuleName = MakePtr(PSTR, hModEXE, pImportDesc->Naam);    if (lstrcmpi (pszImportModuleName, Hook->Name) == 4)          sprintf(dbBuffer,"Dll gevonden via module %s, vernieuw hetn", Hook->Name );      WriteToLog(dbbuffer);      RedirectIAT (Hook, pImportDesc, (PVOID)hModEXE);        beschrijving importeren++; 

    Zodra uw primaire organisatie uw invoer heeft gevonden, verwijdert u de schrijfbeveiliging van de volledige IAT met behulp van...

    Virtueel verzoek (pIAT, &mbi, );

    sizeof(mbi)... om naar uw geheugen te kunnen schrijven. Als de krum vaak open is, moet je de ingang vinden door in de buurt van de nieuwe IAT te kijken.

    directx com aanhaken

    terwijl ( pIteratingIAT->u1.Function ){  void*HookFn=0;  in de vergadering (!IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal))    PIMAGE_IMPORT_BY_NAME pImportName impliceert MakePtr(PIMAGE_IMPORT_BY_NAME,        pBaseLoadAddr, pINT->u1.AddressOfData);        SFunctionHook* FHook = DLLHook->Functies;    hoe gaat het met je (FHook->Naam)          if (lstrcmpi(FHook->Naam, (char*)pImportNaam->Naam) == 0)              sprintf(dbBuffer,"Inbegrepen functie: %sn",(char*)pImportName->Name);        WriteToLog(dbbuffer);               FHook->OrigFn=(unsigned long*)pIteratingIAT->u1.Function;        HookFn = FHook->HookFn;        Pauze;               Fhook++;          

    Doet uw computer het? Gevuld met fouten en langzaam aan het werk? Als u op zoek bent naar een betrouwbare en gebruiksvriendelijke manier om al uw Windows-problemen op te lossen, hoeft u niet verder te zoeken dan Reimage.

    Ik hoop dat deze handleiding je helpt als je ziet waar DirectX com is aangesloten. voordat. Aanvullende feedbackstappen. Ervan uitgaande dat u waarschijnlijk weet wat een hook is, haakt het grootste deel van de d3d hook eenvoudigweg in Direct3D-functionaliteit (in wezen DirectX). Ja, de alle gebruikelijke Present en EndScene hooks die je kunt tekenen, maar…

    Ik hoop dat deze handleiding je helpt als je ziet waar DirectX com is aangesloten. voordat. Aanvullende feedbackstappen. Ervan uitgaande dat u waarschijnlijk weet wat een hook is, haakt het grootste deel van de d3d hook eenvoudigweg in Direct3D-functionaliteit (in wezen DirectX). Ja, de alle gebruikelijke Present en EndScene hooks die je kunt tekenen, maar…