[C++] Windows Detours -> brauche anstupser.

06/20/2014 00:27 |->|<-|#1
Hey wollte bisschen Windows Detours testen, anfang an hat alles gut funktioniert, z.B eine MessageBox zu hooken :p .

Allerdings interessiert mich sowas eher weniger ich wollte direkt mal gucken wie man eine Funktion hookt wo man das Offset noch rausfinden muss, also wandte ich mich an diesem Tutorial: [Only registered and activated users can see links. Click Here To Register...]

Naja leider happerts ein wenig, ich weiss leider nicht wo:
DLL:

IDA PRO:
[Only registered and activated users can see links. Click Here To Register...]

Test Programm:

Ich weiss nicht warum IDA long double anzeigt, ich habs auch mit double probiert, aber selbes ergebniss, hoffe einer weiss was da falsch ist. (mein tipp ist das offset aber ich weiss nicht genau)

Winject:
[Only registered and activated users can see links. Click Here To Register...]
06/20/2014 01:27 snow#2
Führst du Winject denn als Admin aus?
06/20/2014 12:51 |->|<-|#3
Quote:
Originally Posted by snow911 View Post
Führst du Winject denn als Admin aus?
Jo das hab ich auch probiert.
06/20/2014 13:20 +Yazzn#4
Kommentier mal std::cout in DllMain aus.
06/20/2014 13:24 |->|<-|#5
Ne ging leider auch nicht.
06/20/2014 13:25 +Yazzn#6
DEP deaktiviert? Anscheinend wird die DLL ja nicht mal injected. Ansonsten evtl. mal einen anderen Injector verwenden.
06/20/2014 13:28 |->|<-|#7
Quote:
Originally Posted by Peter File View Post
DEP deaktiviert? Anscheinend wird die DLL ja nicht mal injected. Ansonsten evtl. mal einen anderen Injector verwenden.
Was ist DEP?.
Und ich hab ja das cout hinzugefügt damit ich sehe, ob sie überhaupt injected wird, was auch der Fall ist anscheinend scheitert es bei der Funktion.
06/20/2014 14:27 +Yazzn#8
06/20/2014 14:39 |->|<-|#9
Leider hat das auch nicht geholfen, selbes ergebniss wie vorher.
07/08/2014 10:57 f1Nn#10
Code:
#define ADDRESS 0x0413D00

typedef double(__cdecl *tHookedFunction)(double arg1);
tHookedFunction originalFunction;

void Hook(void)
{
	originalFunction = (tHookedFunction)CreateDetour((byte*) ADDRESS, (byte*) HookedFunction);
}

double __cdecl HookedFunction(double arg1)
{
	cout << arg1 << endl;
        arg1 = 13.37;

        return originalFunction(arg1);
}
Untested.

Quote:
Ich weiss nicht warum IDA long double anzeigt, ich habs auch mit double probiert.
Weil IDA nicht alles weiß. Die Calling Convention (stdcall, cdecl, thiscall, etc.) wird auch öfters mal falsch angezeigt, einfach reanalyzen oder brain nutzen. Du hast den Source der Quellapplikation vor dir, warum testest du überhaupt "long double", wenn du dir 100% sicher bist, dass es "double" ist?

Code:
arg = qword ptr8
sizeof(double) = 8
sizeof(long double) = 12

Quote:
(mein tipp ist das offset aber ich weiss nicht genau)
Nein, das passt.
07/08/2014 21:31 Dr. Coxxy#11
testapplikation als release kompilieren, die calling convention in der testapplikation fest festlegen auf entweder cdecl oder stdcall, gleiche dann in der dll sowohl bei dem typedef als auch der hookfunktion.
07/08/2014 21:51 MrSm!th#12
Wenn die DEP für einen Injector ausgeschaltet werden muss, ist der Injector Müll.
07/09/2014 14:34 +Yazzn#13
Quote:
Originally Posted by MrSm!th View Post
Wenn die DEP für einen Injector ausgeschaltet werden muss, ist der Injector Müll.
Keine Ahnung wie Winject da verfährt, aber bei vielen anderen Injektoren soll es Probleme geben wenn die DEP an ist.