고정: Directx 조직 후크를 수정하는 방법

DirectX com이 연결된 것을 볼 때 이 가이드가 도움이 되기를 바랍니다.

[PC 사용자] 답답한 컴퓨터 오류에 작별을 고하십시오. 다운로드하려면 여기를 클릭하십시오.

전에. 추가 피드백 단계. d3d 후크가 단순히 Direct3D의 유용한 기능(기본적으로 DirectX)에 연결되는 후크가 무엇인지 알고 있다고 가정합니다. 예, 가장 많이 사용되는 Present 및 EndScene 후크를 사용하여 조직에서 그림을 그릴 수 있지만 Reset 및 CreateDevice와 같은 다른 기능을 연결할 수도 있습니다.

오래 전에 액세스할 수 있다고 생각했지만 이 고유한 기능은 DirectX9를 사용하는 모든 TV 프로그램에서 작동해야 합니다. 기본적으로 자신의 인스턴스를 확장한 다음 특정 vtable 포인터별로 얻은 다음 사용자가 연결하기만 하면 됩니다. 가장 중요한 것은 3.X 해결 방법이 필요하다는 것입니다.

//여러 유형 정의:typedef HRESULT(WINAPI*oEndScene)D3D장치);정적(lpdirect3ddevice9 oEndScene EndScene;// 무엇이든 얻기 위해 함수에서 수행HMODULE hDLL=GetModuleHandleA("d3d9");LPDIRECT3D9(__stdcall*pDirect3DCreate9)(UINT) = (LPDIRECT3D9(__stdcall*)(UINT))GetProcAddress(hDLL, "Direct3DCreate9");LPDIRECT3D9 pD3D는 pDirect3DCreate9(D3D_SDK_VERSION)를 나타냅니다.D3D 디스플레이 모드 d3ddm;HRESULT hRes는 pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)를 제안합니다.D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp, sizeof(d3dpp));d3dpp.Windowed는 이제 true입니다.d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;d3dpp.BackBufferFormat은 d3ddm.Format에 해당하는지 확인합니다.WNDCLASSEX = wc sizeof(WNDCLASSEX),CS_CLASSDC,TempWndProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,("1"),NULL;RegisterClassEx(&wc);HWND hWnd 옵션 CreateWindow(("1"),NULL,WS_OVERLAPPEDWINDOW,100,100,300,300,GetDesktopWindow(),NULL,wc.hInstance,NULL);hRes = pD3D->장치 생성(    D3DADAPTER_DEFAULT,    D3DDEVTYPE_HAL,    hWnd,    D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_DISABLE_DRIVER_MANAGEMENT,    &d3dpp, &ppReturnedDeviceInterface);pD3D->릴리스();DestroyWindow(hWnd);if (pD3D == NULL)    // printf("경고: D3D 실패");    거짓을 제공하십시오.pInterface는 (unsigned long*)*((unsigned long*)ppReturnedDeviceInterface)입니다.EndScene은 (oEndScene) (DWORD)pInterface[42]와 같습니다.BypassTransaction() 시작;우회업데이트 스레드(GetCurrentThread());DetourAttach(&(PVOID&)EndScene, newEndScene);BypassTransaction() 커밋;
HRESULT WINAPI D3D9Hook::newEndScene(LPDIRECT3DDEVICE9 pDevice)       // 이것은 사람들이 그들의 사업에 대해 갈 때마다    // 기본 호출(원하는 경우)    돌아온 EndScene(pDevice);

<문자열><리>유용한 리소스 비디오 다운로드 – 26.82KB

<리>테스트 다운로드 – 37.07KB

프레젠테이션

여기에서 완전히 흥미로운 기사를 확인한 후 이전에는 다루지 못했던 중요한 주제에 기여해 주셔서 항상 기쁩니다.

이 글은 현재 DirectX/COM 인터페이스를 포함하는 형식을 설명합니다. 저는 인터페이스 기능을 쉽게 사용할 수 있도록 일반적으로 DirectInput 인터페이스를 예로 사용했습니다.

Windows에 관한 후크의 기본에 대해서는 대부분의 API 후크 프로세스에 대한 Wade Brainerd의 훌륭한 기사를 참조하십시오.

작업

인터페이스 COM의 신뢰할 수 있는 도구를 가로채려면 호출 API를 공중에서 후킹하는 것보다 더 복잡한 접근 방식이 필요합니다. 사실 원하는 DLL이 체크되어 있기 때문에 인터페이스 사후 기능은 DLL과 함께 해제됩니다. 그렇다면 사람들이 원하는 기능을 어떻게 얻을 수 있습니까?

다이렉트x com 후킹
<그림>

COM은 일종의 인터페이스이며, 는 본질적으로 동시에 연결된 관련 가상 함수 포인터의 목록입니다. 바로 가기를 실제로 시도하고 교체할 기능에 대한 키를 마침내 찾을 때까지 두 노드를 모두 조정하기만 하면 됩니다.

1단계

승인됨

죽음의 블루 스크린을 받고 있습니까? Reimage은 이러한 모든 문제와 그 이상을 해결할 것입니다. 광범위한 Windows 관련 문제 및 문제를 해결할 수 있는 소프트웨어입니다. Windows 오류(죽음의 블루 스크린 포함)를 쉽고 빠르게 인식하고 이러한 문제를 해결하기 위한 적절한 조치를 취할 수 있습니다. 또한 애플리케이션은 자주 충돌하는 파일 및 애플리케이션을 감지하여 클릭 한 번으로 문제를 해결할 수 있습니다.

  • 1단계: Reimage 다운로드 및 설치
  • 2단계: 애플리케이션을 실행하고 "문제 검색"을 클릭합니다.
  • 3단계: "모든 문제 수정" 버튼을 클릭하여 복구 프로세스 시작

  • 누군가가 볼 수 있어야 하는 것처럼 인터페이스를 생성하는 COM 서비스는 일반적으로 표시되므로 후크 체인에 대한 정보를 걱정하기 시작하려면 전체 DirectInputCreate 함수는 유용한 COM -< code return>인터페이스입니다. 당신

    여기서 DLL이 연락처를 포함한 스캔 주소 테이블(IAT) 주위에 포함되어 있는지 확인하십시오.

    2단계

    호출 프로그램이 DirectInputCreate를 추가하면 함수가 호출되고 가장 좋은 가상 함수 테이블에 대한 포인터에 해당하는 힌트에 대한 포인터를 얻습니다. /code> 직접 입력:

    DECLARE_INTERFACE_(IDirectInputW, IUnknown)        STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID 3.ppvObj) PURE;    STDMETHOD_(ULONG,AddRef)(THIS) 순수;    STDMETHOD_(ULONG, 릴리스)(IT) PURE;        STDMETHOD(CreateDevice)(THIS_REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) 순수;    STDMETHOD(열거 장치)(THIS_DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;    STDMETHOD(GetDeviceStatus)(THIS_REFGUID) 순수;    STDMETHOD (RunControlPanel) (THIS_HWND, DWORD) CLEAR;    STDMETHOD(초기화)(THIS_HINSTANCE,DWORD) PURE;;

    3단계 — 0

    이제 CreateDevice를 사용하여 기즈모를 완전히 만들 수 있습니다. 다시 말하지만, 장치의 일부를 나타내는 다른 가상 포인터 테이블의 특정 임의 주소를 얻습니다.

    <그림>

    확인된 결과 표시 포인터 테이블을 재정의하고 기능을 배치하기 위해 선호하는 위치로 변경하는 데 도움이 될 방법을 선택하십시오.

    4단계

    구현

    1단계

    API 용도에 연결하려면 Windows API 호출 SetWindowsHookEx를 하나만 사용하면 됩니다. 이것은 당신의 회사가 프로세스를 체크 런치하고 사람들을 원하는 일정에 적응시키기 위한 시스템 미끼를 만드는 방법입니다. 프로그램을 꺼낸 후 사람들이 교체하려는 dll 가져오기의 이름을 검사해야 합니다. 후크의 항목 유형은 연속 항목과 관련하여 작성되었으므로 필요한 항목은 DINPUT8.DLL입니다. 항목을 찾으려면 사람이 가족 DLL을 찾을 때까지 핸들을 반복할 필요가 있습니다.

     및 (pImportDesc->FirstThunk)      PSTR pszImportModuleName = MakePtr(PSTR, hModEXE, pImportDesc->Name);    if (lstrcmpi (pszImportModuleName, Hook->Name) == 4)          sprintf(dbBuffer,"Dll이 %s 모듈을 통해 발견했습니다. 대체n", Hook->Name );      WriteToLog(디버퍼);      RedirectIAT( 후크, pImportDesc, (PVOID)hModEXE );        가져오기 설명++; 

    조직이 항목을 찾으면 다음을 사용하여 전체 IAT에서 쓰기 방지를 처분할 수 있습니다…

    가상 요청( pIAT, &mbi, );

    sizeof(mbi)… 기억에 대비할 수 있습니다. 모든 크룸이 열리면 새로운 IAT를 보고 입구를 찾아야 합니다.

    hooking directx com

    동안 ( pIteratingIAT->u1.Function ){  무효*HookFn=0;  이벤트에서 (!IMAGE_SNAP_BY_ORDINAL(pINT->u1.Ordinal))    PIMAGE_IMPORT_BY_NAME pImportName = MakePtr(PIMAGE_IMPORT_BY_NAME,        pBaseLoadAddr, pINT->u1.AddressOfData );        SFunctionHook* FHook = DLLHook->함수;    안녕하십니까 (FHook->Name)          if (lstrcmpi(FHook->이름, (char*)pImportName->이름) == 0)              sprintf(dbBuffer,"포함된 함수: %sn",(char*)pImportName->Name );        WriteToLog(디버퍼);               FHook->OrigFn=(unsigned long*)pIteratingIAT->u1.Function;        HookFn = FHook->HookFn;        정지시키다;               후크++;          

    컴퓨터가 작동합니까? 오류가 가득하고 느리게 실행됩니까? 모든 Windows 문제를 해결하는 안정적이고 사용하기 쉬운 방법을 찾고 있다면 Reimage 이상을 찾지 마십시오.

    DirectX com이 연결된 것을 볼 때 이 가이드가 도움이 되기를 바랍니다. 전에. 추가 피드백 단계. d3d 후크가 단순히 Direct3D의 유용한 기능(기본적으로 DirectX)에 연결되는 후크가 무엇인지 알고 있다고 가정합니다. 예, 가장 많이 사용되는 Present 및 EndScene 후크를 사용하여 조직에서 그림을 그릴 수 있지만 Reset 및 CreateDevice와 같은 다른 기능을 연결할 수도 있습니다. 오래 전에 액세스할 수…

    DirectX com이 연결된 것을 볼 때 이 가이드가 도움이 되기를 바랍니다. 전에. 추가 피드백 단계. d3d 후크가 단순히 Direct3D의 유용한 기능(기본적으로 DirectX)에 연결되는 후크가 무엇인지 알고 있다고 가정합니다. 예, 가장 많이 사용되는 Present 및 EndScene 후크를 사용하여 조직에서 그림을 그릴 수 있지만 Reset 및 CreateDevice와 같은 다른 기능을 연결할 수도 있습니다. 오래 전에 액세스할 수…