来自地址的函数原型

时间:2014-04-24 23:44:05

标签: c pointers hook

有没有办法通过地址作为原型从内存中调用函数? 这在windows上运行得很好,但我不知道如何使它在linux上运行主要是因为__cdecl约定。有没有办法在linux上做呢? gcc总是返回这个

  

错误:函数'void MyFunction(int)'被初始化为变量

Windows代码:

void (WINAPIV *MyFunction)(int param) = (void (WINAPIV *)(int param))0x00000001;

void Print()
{
cout << "1" << endl;
}

#define __cdecl __attribute__((__cdecl__))

void (__cdecl *MyFunction)() = (void (__cdecl *)())&Print;

对不起,这是我的错,感谢工作。

1 个答案:

答案 0 :(得分:2)

你究竟想在Linux / GCC上做什么?这对我有用(刚刚删除了WINAPIV部分):

void (*MyFunction)(int param) = (void (*)(int param))0x00000001;

无论如何,BTW,很多人都说有一个typedef使语法更容易,即:

typedef void (*MyFunctionType)(int param);
MyFunctionType myFunction = (MyFunctionType)0x00000001;