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


Log in to reply