2012-05-03 5 views
1

경주 용 게임이 있습니다. 원격 측정 및 통계를 수집해야합니다. 그리고 추가 HUD를 추가하기 위해우회로를 뒤덮는 우회 도로

나는 Detours를 편집했다. 그리고 응용 프로그램 창의 이름을 바꿀 수있는 고리를 만들 수 있습니다.

LRESULT (WINAPI * TrueSendMessageW)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) = SendMessageW; 
__declspec(dllexport) LRESULT WINAPI MySendMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) 
{ 
    if (Msg == WM_SETTEXT) 
     return TrueSendMessageW(hWnd, Msg, wParam, (LPARAM)L"new name window"); 
    return TrueSendMessageW(hWnd, Msg, wParam, lParam); 
} 
... 

그리고 withdll.exe로 실행하십시오. 다 괜찮아.

그러나 direct3d를 가로채는 방법을 알아낼 수 없습니다. API 모니터의 도움으로, 나는이 프로그램이 사용하는 것을 발견 Microsoft.Xna.Framework.Graphics.dll 에 IDirect3DDevice9 :: 대한 SetTexture

사람이 질감을 얻는 방법을 말할 수 있습니까? 일반적으로, 나는 비슷한 것을 얻고 싶습니다

+0

SendMessage에 대한 우회 경로가 있지만 실제로 필요한 것은 Direct3D API 스트림을 우회하는 것입니다. 재밌는 당신 매튜 피셔의 링크를 가져 왔기 때문에 실제로 관리 C에서 프로젝트를 재현하려고 해요 #. 나는 C++에서 당신을 도울 수는 없지만 Fischer의 소스를 확실히 다운로드하십시오. Diret3D를 가로 채기 위해 Detours를 사용하지 않는다는 것을 알 수 있습니다. 그는 단순히 자신의 * d3d9.dll 파일을두기 만합니다. 그는 래퍼를위한 대부분의 인터페이스를 재 작성해야하지만 작동합니다. – Jason

답변

0

우회는 OS API 호출을 차단하고 Direct3D는 COM 개체 개념을 통해 구현됩니다. D3D 장치 개체 생성의 첫 번째 단계는 가로 챌 수 있지만이 시점 이후에는 COM 개체 인터페이스를 처리해야하므로 Detour가 도움이되지 않습니다.