void foo(int fmt, ...)
{
}
//I hook foo
static void (*original_foo)(int fmt, ...);
void replaced_foo(int fmt, ...)
{
printf("Hooking");
va_list args;
va_start(args, fmt);
//do something
va_end(args);
//但我想打電話給original_foo功能, //我不知道如何調用它...C/C++的va_list
}
//Hook Function not include ...
Hook(foo, replaced_foo, (void **)&original_foo);
你不能用標準C - 你必須下降到裝配什麼特定平臺。如果有'foo()'的變體需要'va_list'參數(如'vprintf()'是'printf()'的變體),那麼你可以傳遞'args'給它。 –
這幾乎是答案,而不是:-P – Will