--- Revision None +++ Revision 376564326131 @@ -0,0 +1,40 @@ +#include +#include + +using namespace std; + +void tFunc(int (*_printf)(const char*,...)) +{ + _printf("You got here!"); +} + +int main(int argc, char* argv[]) +{ + unsigned int fsize; + + unsigned int mv, tv; + + mv = reinterpret_cast(main); + tv = reinterpret_cast(tFunc); + + fsize = mv - tv; + + int (*_printf)(const char*, ...); + void (*_tFunc)(int (*)(const char*, ...)); + _printf = printf; + + unsigned char buff[256]; + unsigned char* cpy = (unsigned char*) tFunc; + + for(unsigned int i = 0; i < fsize; i++) + { + buff[i] = cpy[i]; + } + + _tFunc = (void(*)(int(*)(const char*, ...))) buff; + + _tFunc(_printf); + //tFunc(_printf); + + return 0; +}