Detours Express / DetourFunction
-
Hi,
Ich bin grad am basteln, bzw. Releasen, von nem kleinen Mod und wollt fragen, woher ich "DetourFunction" herkrieg? Ich hatte mir Detours Express 2.1 runtergeladen un installiert aber jetzt kommt beim Kompiliern der fehler:error C3861: "DetourFunction": Bezeichner wurde nicht gefunden.Ich hab irgendwo gelesen dass die Funktion nur in Detours Express 1.5 verfügbar sei, habe das aber nirgends zum downloaden gefunden. Gibts in Detours Express sowas wie ne Ersatzfunktion von "DetourFunktion"

Gruß
-
Hat nix mit MFC zu tun.
Auszug aus meinem Code:long (__stdcall *RealDirectInputCreate)(HINSTANCE hInst, unsigned long dwVersion, LPDIRECTINPUTA* ppDI, LPUNKNOWN punkOuter) = DirectInputCreateA; long (__stdcall *TramDirectInputCreate)(HINSTANCE hInst, unsigned long dwVersion, LPDIRECTINPUTA* ppDI, LPUNKNOWN punkOuter); long __stdcall HookDirectInputCreate(HINSTANCE hInst, unsigned long dwVersion, LPDIRECTINPUTA* ppDI, LPUNKNOWN punkOuter); bool __stdcall DllMain(HMODULE, unsigned long reason, void*) { if(reason == DLL_PROCESS_ATTACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttachEx(&reinterpret_cast<void*&>(RealDirectInputCreate), HookDirectInputCreate, &reinterpret_cast<DETOUR_TRAMPOLINE*&>(TramDirectInputCreate), 0, 0); DetourTransactionCommit(); } else if(reason == DLL_PROCESS_DETACH) { DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&reinterpret_cast<void*&>(RealDirectInputCreate), HookDirectInputCreate); DetourTransactionCommit(); } return true; } long __stdcall HookDirectInputCreate(HINSTANCE hInst, unsigned long dwVersion, LPDIRECTINPUTA* ppDI, LPUNKNOWN punkOuter) { long result = TramDirectInputCreate(hInst, dwVersion, ppDI, punkOuter); // ... return result; }MfG
-
Ja in welchem Code? In dem zu kompilierenden Objekt oder in einer von den detours dateien?
-
Was?
Der Code zeigt wie man mit Detours 2.1 eine Funktion hookt.
Die vier Zeilen im "DLL_PROCESS_ATTACH" Zweig setzen diesen Hook.
Der Code muss im Zielprozess-Adressraum ausgeführt werden (DLL mappen zB.).MfG
-
aso xD ok
-
Aber ich kriegs irgendwie nich hin diesen code:
orig_CG_Syscall = (int (__cdecl *)(int,...)) \ DetourFunction((LPBYTE)0x00448780, (LPBYTE)CG_Syscall_Hook); orig_LoadLibrary = (struct HINSTANCE__ *(__stdcall*)(const char*)) \ DetourFunction((LPBYTE)LoadLibrary, (LPBYTE)LoadLibrary_Hook);in sowas zu verwandeln
DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttachEx(&reinterpret_cast<void*&>(RealDirectInputCreate), HookDirectInputCreate, &reinterpret_cast<DETOUR_TRAMPOLINE*&>(TramDirectInputCreate), 0, 0); DetourTransactionCommit();
Edit: bzw. in zwei mal des

-
Lad dir da mal die detours.h und detours.lib -> http://usl.sis.pitt.edu/wjj/USAR/Release/SimpleUI/SimpleUI/
Einfach den Pfad zur Header Datei bei den Linker Optionen hinzufügen und die .lib linken.Das ist die 1.5er Version also bei mir klappt das mit der DetourFunction.