Eine Frage Smith:
Ich verstehe soweit alles, danke auch an dieser Stelle für das Tutorial.
Nur hab ich ein Verständnisproblem an der rot markierten Stelle:
Code:
#include <Windows.h>
#pragma comment(lib, "detours.lib")
#include <detours.h>
typedef int (WINAPI *Messagebox_typ)(HWND,LPCTSTR,LPCTSTR,UINT); // Prototyp erstellen
Messagebox_typ Messagebox_orig = NULL; //Zeiger aufs Trampolin erstellen um die Funktion , die vom Programm erwartet,wird aufzurufen
// DETOUR FUNKTION ERSTELLEN MIT SELBER CALLING CONVENTION, PARAMETER, ... //
int WINAPI MessageBoxDetour(HWND window, LPCTSTR text, LPCTSTR caption, UINT type)
{
text = L"Hook function succesful ";
caption = L"Hooked";
return Messagebox_orig( window, text, caption, type );
}
BOOL APIENTRY DllMain(HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
[COLOR="Red"]Messagebox_orig = (Messagebox_typ)DetourFunction((PBYTE)MessageBoxW, (PBYTE)MessageBoxDetour);[/COLOR]
break;
}
return true;
}
DetourFunction gibt ja die Adresse des Trampolins zurück.
Dann beinhaltet also der Funktionszeiger (der aufs Trampolin zeigen soll) die Adresse des Trampolins.
Ich verstehe jetzt irgendwie nicht, was das für einen Zweck haben soll und wieso wenn ich das "Messagebox_orig =" weglasse das Programm crasht.