Detours 1.5

Hi,

ich habe nach einem Tutorial versucht eine Funktion von Notepad zu hooken.
Aber meine Code wird nicht ausgeführt ...

Code:
#include <windows.h>
#include <detours.h>


int (__stdcall *InsertDateTime_orig) (int x);

int __stdcall InsertDateTime(int x)
{
	MessageBox (NULL, "InsertDateTime hooked!", "Detoured", MB_ICONINFORMATION);

	return InsertDateTime_orig(x);
};

int APIENTRY DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved )
{	
	switch (dwReason)
	{
		case DLL_PROCESS_ATTACH:
				InsertDateTime_orig = (int (__stdcall *)(int))DetourFunction ((PBYTE)0x0100880E,(PBYTE)InsertDateTime);
			break;
		case DLL_PROCESS_DETACH:
				DetourRemove ((PBYTE)0x0100880E,(PBYTE)InsertDateTime);
			break;
	}
	return true;
}

Ist daran was falsch ?
 
Welchen Compiler verwendest du ?
versuchs mal mit
Code:
extern "C" int APIENTRY DllMain (...)
 
Wie genau nutzt du diese DLL? Damit das funktioniert, muss die DLL in den Notepad-Prozess geladen werden. Stichwort "DLL-Injection".
 
Ich nutze den ms Compiler -> MSVC++.
An extern "C" liegt es nicht, ich habe vor der DetourFunction eine MessageBox eingebaut und die wird auch erfolgreich aufgerufen.
Und ja ich habe die .dll injected (auch mit verschiedenen Injectors).

Da ich Vista nutze habe ich Notepad und die Injectors als Admin ausgeführt ... hat aber leider auch nicht geholfen.

hmpf :/
 
Es könnte etwas bringen, das ganze mit einem Debugger zu verfolgen: Notepad starten, DLL injecten, Debugger(z.B. OllyDbg) anhängen und schauen, ob die gehookte Funktion auch korrekt umgeleitet wird. Wenn ja, Breakpoint setzen und verfolgen was schief läuft.
 
wie kommst du auf diesen Wert : (PBYTE)0x0100880E ?
So wie ich das verstehe, ist das die orginal Adresse.
Vlt. solltest du die besser jedesmal neu mit GetProcAddress bestimmen.
 
Original von FILE
wie kommst du auf diesen Wert : (PBYTE)0x0100880E ?
So wie ich das verstehe, ist das die orginal Adresse.
Vlt. solltest du die besser jedesmal neu mit GetProcAddress bestimmen.

Das geht nur, wenn die zu hookende Funktion exportiert wird, was bei Notepads internen Funktionen nicht der Fall sein dürfte. Daher bleibt einem an dieser Stelle nichts anderes übrig, wenn man nicht die Originaldatei verändern will.
 
Ok ich bin zwar nicht sehr geübt im Umgang mit OllyDbg aber das werde ich mal versuchen .. die Adresse habe ich ja bereits.

Aber ist der Code denn ansonsten korrekt bzw. könnte mal jemand von euch versuchen den Code zu kompilieren und zu testen ?


// Edit

Also ich habe mir das ganze mal mit Olly angeguckt und an der Adresse wird auch tatsächlich was verändert, aber was schief läuft weiss ich leider immer noch nicht :/
 
Zurück
Oben