Hallo zusammen!
Ich habe im Internet gerade per Zufall Microsoft Detours entdeckt und wollte damit ein paar Tests mit meiner directX-Applikation machen. Leider bin ich bisher nur mässig erfolgreich!
Folgende DLL verwende ich:
In meiner Applikation nun, die ich detouren will geschieht folgendes:
Es erscheint beim Programmstart schön sauber "Detoured endscene" allerdings erscheint keine MessageBox, aber die Applikation rendert noch immer einwandfrei. Daher vermute ich, dass EndScene nicht umgeleitet wird.
Woran könnte das liegen? Ich habe mit IDA die Adresse von CD3DBase::EndScene nachgeschaut in meiner d3d9.dll und die Addresse entsprechend eingetragen (mehrfach auf Schreibfehler überprüft).
Ich hoffe jemand kann mir helfen!
Gruss
Cromon
Ich habe im Internet gerade per Zufall Microsoft Detours entdeckt und wollte damit ein paar Tests mit meiner directX-Applikation machen. Leider bin ich bisher nur mässig erfolgreich!
Folgende DLL verwende ich:
Code:
HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
MessageBoxA(0, "EndScene!", "", MB_OK);
return pEndScene(pDevice);
}
void InitHook(HINSTANCE hModul)
{
HMODULE hModule = 0;
while(!hModule)
{
hModule = GetModuleHandle("d3d9.dll");
Sleep(100);
}
DisableThreadLibraryCalls((HMODULE)hModul);
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
LPVOID func = (LPVOID)0x7542CE09;
DetourAttach(&func, hkEndScene);
if(DetourTransactionCommit() == NO_ERROR)
{
MessageBoxA(0, "Detoured endscene!", "", MB_OK);
}
}
int WINAPI DllMain(HINSTANCE hInst ,DWORD reason, LPVOID reserved)
{
switch(reason)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)InitHook, hInst, 0, 0);
break;
}
return true;
}
In meiner Applikation nun, die ich detouren will geschieht folgendes:
Code:
LoadLibraryA("HookDLL.dll");
Es erscheint beim Programmstart schön sauber "Detoured endscene" allerdings erscheint keine MessageBox, aber die Applikation rendert noch immer einwandfrei. Daher vermute ich, dass EndScene nicht umgeleitet wird.
Woran könnte das liegen? Ich habe mit IDA die Adresse von CD3DBase::EndScene nachgeschaut in meiner d3d9.dll und die Addresse entsprechend eingetragen (mehrfach auf Schreibfehler überprüft).
Ich hoffe jemand kann mir helfen!
Gruss
Cromon