我目前正在对一个程序进行逆向工程,以了解它是如何工作的,并且刚刚完成了对程序调用的函数的反汇编。函数的起始地址存储在指针中,它需要4个参数。我的目标是现在将指针强制转换为可调用函数。
我已经在一两年前看到过这种情况,但不再能够访问所使用的示例代码。本质上,我想要一个指向函数开头的指针并将其转换为:
void AddValueToMain(void* basePtr, unsigned int value, __int64 compareValue, __int64 ONE_BILLION);
如何转换此指针以便我可以像使用C ++编写的那样调用函数?
答案 0 :(得分:4)
您可以reinterpret_cast
到函数指针。假设m_ptr
保存指向函数的指针:
auto AddValueToMain = reinterpret_cast<void(*)(void*,unsigned int,__int64,__int64)>(m_ptr);
现在你可以像普通函数一样调用AddValueToMain
:
AddValueToMain(ptr, 42, 2, 4);