通过已知地址调用函数? C ++

时间:2017-10-29 21:58:17

标签: c++

我在已知的内存地址处有一个函数(例如:0x11111111)。该函数返回一个int,并将uint32_t指针作为唯一参数。

如何使用c ++调用此函数?我已经看到了一些通过其地址调用函数的例子,但我似乎无法找到一个以指针作为参数的函数

编辑:我看到了。没有解决如何调用将指针作为参数的函数

1 个答案:

答案 0 :(得分:1)

如果你确定那里有一个函数,你可以通过将地址转换为适当类型的函数指针来调用它,然后调用它。这是执行此操作的C代码:

typedef int (*FunctionType)(uint32_t*);

FunctionType function = (FunctionType)0x11111111;
function(arg);

可以很容易地修改它以支持任何数量的函数参数和您想要的任何返回类型。只需调整FunctionType typedef的参数类型列表。

或者,在一行(gulp):

(((int (*)(uint32_t *)) 0x11111111)(arg);