C ++获取指针并将其转换为可调用函数

时间:2017-02-20 14:12:00

标签: c++ pointers casting reverse-engineering function-calls

我目前正在对一个程序进行逆向工程,以了解它是如何工作的,并且刚刚完成了对程序调用的函数的反汇编。函数的起始地址存储在指针中,它需要4个参数。我的目标是现在将指针强制转换为可调用函数。

我已经在一两年前看到过这种情况,但不再能够访问所使用的示例代码。本质上,我想要一个指向函数开头的指针并将其转换为:

void AddValueToMain(void* basePtr, unsigned int value, __int64 compareValue, __int64 ONE_BILLION);

如何转换此指针以便我可以像使用C ++编写的那样调用函数?

1 个答案:

答案 0 :(得分:4)

您可以reinterpret_cast到函数指针。假设m_ptr保存指向函数的指针:

auto AddValueToMain = reinterpret_cast<void(*)(void*,unsigned int,__int64,__int64)>(m_ptr);

现在你可以像普通函数一样调用AddValueToMain

AddValueToMain(ptr, 42, 2, 4);