Servus Com,
ich habe mir zu Testzwecken ein simples Testprog gebaut.
Code:
#include <iostream>
#include <unistd.h>
class TestClas
{
public:
int testfunc(int one, int two);
};
int TestClas::testfunc(int one, int two)
{
return one + two;
}
int main()
{
TestClas test;
while(true)
{
printf("mainresult:%d\n", test.testfunc(11, 12));
sleep(1);
}
return 0;
}
Ich Versuche die testfunc hiermit zu hooken:
Code:
#include <stdio.h>
#include "detours.h"
void __attribute__ ((constructor)) lib_main(void);
typedef int (*originalFunction)(int, int);
MologieDetours::Detour<originalFunction>* detour_PrintIntegers = NULL;
int hookedFunction(int one, int two)
{
printf("one:%d two:%d\n", one, two);
return 10;
}
void lib_main()
{
new MologieDetours::Detour<originalFunction>((originalFunction)0x80486D0, hookedFunction);
}
Resultate:
mainresult:10 wie erwartet
one:-1077945277 two:11
Kann mir jemand einen Denkanstoß geben warum one und two falsch sind?
LG Black
#update
hat sich erledigt, lag an dem this pointer da es eine Methode ist.
typedef int (*originalFunction)(void*, int, int);
lg Black