Frage zu Detours
-
Hey!
Wollte bisschen rumexperimentieren da eine (fremde) Anwendung mal gecrasht ist als dort DetourDetach() aufgerufen wurde als die umgeleitete Funktion sehr oft aufgerufen wurde. Doch vielleicht lag es auch an CreateRemoteThread()? Ich denke nicht...
Nun, ich wollte eine einfache Testanwendung schreiben welche eine Funktion so oft wie nur möglich aufruft und auf diese eine Umleitung setzen. Doch das klappt nur wenn die Funktion nicht in einer Schleife steht, warum?
// In dieses Programm wird eine DLL gemapped welche den Detours-Hook-Code enthält void MyFunction() { cout << "REAL" << endl; } int main() { cout << "FUNC ADDR.: " << MyFunction << endl; int z; cin >> z; while(true) // Diese Schleife verhindert einen hook!? MyFunction(); cin >> z; }Hier lässt sich die Funktion nicht hooken! DetourAttachEx() gibt aber NO_ERROR zurück! Nur wenn ich die Zeile "while(true)" auskommentiere funktioniert es! Genauso wenn ich den Funktionsaufruf paarmal untereinander schreibe funktioniert es auch.
Warum ist das so? Was hat es mit der Schleife auf sich?
Danke schonmal!
MfG
-

-
Du könntest den in beiden Fällen generierten Assemblercode ansehen und vergleichen.
-
Geht das direkt im Visual Studio oder muss ich zB. OllyDbg benutzen? Wie finde ich dort am schnellsten den main-Entry?
Sorry, hab noch fast nix auf dieser Ebene gemacht...Grad kommt mir in den Sinn, dass es doch sein könnte dass das Detours API keine geeignete Stelle im Speicher findet um die Umleitung zu schreiben, hmm...