Detours 2.1: Original aufrufen...
-
Hey!
Ich möchte Detours 2.1 benutzen, schaffe es aber nicht die original Funktion aufzurufen, nachdem vorher die detour Funktion aufgerufen wurde.
#include <windows.h> #include <detours.h> #include <iostream> using namespace std; typedef int(*pointerFunc)(int, int); int (*trueFunc)(int, int); int hookFunc(int, int); bool WINAPI DllMain(HMODULE hDll, DWORD dwReason, PVOID pvReserved) { trueFunc = (pointerFunc)0x00401AA0; // Adresse zu einer Funktion int Test(int, int) eines anderen Prozesses if(dwReason == DLL_PROCESS_ATTACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)trueFunc, hookFunc); DetourTransactionCommit(); } else if(dwReason == DLL_PROCESS_DETACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&(PVOID&)trueFunc, hookFunc); DetourTransactionCommit(); } return true; } int hookFunc(int a1, int a2) { a1 = 2; a2 = 3; cout << "hkTest(" << a1 << ", " << a2 << ") called..." << endl; return ??? // trueFunc ergibt Endlosschleife (Weil Adresse ersetzt wurde?) }
Danke!
MfG
-
DetourAttachEx() ist dafür zuständig, sorry habs in der Hilfsdatei überlesen...
-
Kleine Frage, kann ich via Detours auch externe programme hooken? zb. die TexOut oder DrawText function?
-
das ist irgendwie der sinn von detours, also ja