0
我目前正在對猴子補丁c函數調用進行演示,想法是你有一個共享的c文件(例如:lib.c
),它有一個導出的函數void foo()
在頭文件lib.h
中。覆蓋函數指針引發錯誤:非對象類型不可指派
目前我正在努力做到以下幾點:
#include <stdio.h>
#include "lib.h"
void (*foo_original)() = NULL;
void foo_patch()
{
puts("Before foo!");
(*foo_original)();
puts("Before foo!");
}
int main()
{
foo_original = &foo;
foo = &foo_patch;
// Somewhere else in the code
foo();
}
但是這給了我以下錯誤:
error: non-object type 'void()' is not assignable
有誰知道我怎麼能解決這個問題?由於
所以,你所說的基本上是不可能覆蓋'foo()'的地址? – Paradoxis
@paradoxis:沒錯。函數在名義上僅執行內存中具有固定地址。 – rici