C++ 获取一个指针并将其转换为可调用函数
C++ taking a pointer and turning it into a callable function
我目前正在对一个程序进行逆向工程以了解它是如何工作的,并且刚刚完成反汇编该程序调用的一个函数。函数的起始地址存储在一个指针中,它有 4 个参数。我的目标是现在将指针转换为可调用函数。
我在一两年前看到过这种做法,但无法再访问使用过的示例代码。本质上,我想获取一个指向函数开头的指针并将其转换为:
void AddValueToMain(void* basePtr, unsigned int value, __int64 compareValue, __int64 ONE_BILLION);
如何强制转换此指针,以便我可以调用函数,就好像它是用 C++ 编写的一样?
您可以reinterpret_cast
指向一个函数指针。假设 m_ptr
持有指向函数的指针:
auto AddValueToMain = reinterpret_cast<void(*)(void*,unsigned int,__int64,__int64)>(m_ptr);
现在您可以像调用普通函数一样调用 AddValueToMain
:
AddValueToMain(ptr, 42, 2, 4);
我目前正在对一个程序进行逆向工程以了解它是如何工作的,并且刚刚完成反汇编该程序调用的一个函数。函数的起始地址存储在一个指针中,它有 4 个参数。我的目标是现在将指针转换为可调用函数。
我在一两年前看到过这种做法,但无法再访问使用过的示例代码。本质上,我想获取一个指向函数开头的指针并将其转换为:
void AddValueToMain(void* basePtr, unsigned int value, __int64 compareValue, __int64 ONE_BILLION);
如何强制转换此指针,以便我可以调用函数,就好像它是用 C++ 编写的一样?
您可以reinterpret_cast
指向一个函数指针。假设 m_ptr
持有指向函数的指针:
auto AddValueToMain = reinterpret_cast<void(*)(void*,unsigned int,__int64,__int64)>(m_ptr);
现在您可以像调用普通函数一样调用 AddValueToMain
:
AddValueToMain(ptr, 42, 2, 4);