【发布时间】:2019-10-18 09:08:41
【问题描述】:
我在 dll 中有未导出的成员函数。
我正在尝试使用之前提取的 base + offset 地址调用此函数。
我在从类实例进行实际调用时遇到问题。
我能够从 dll 中获取模块的基址和函数的偏移量。
我调用该函数时出错,因为它不是我班级的成员。
HMODULE hDll = GetModuleHandleA("myModule.dll");
void *(funcPtr)() = (void(*)())((char *)&hDll + 0x101E07); //this is the non exported function address
myClassInstance->funcPtr();
我收到一个错误:
'funcPtr' is not a member of 'MyClass'
如何从myClassInstance 拨打funcPtr?
【问题讨论】:
-
这不是明智的代码,您只需使用
funcPtr()来调用该函数。如果您希望变量成为该类的成员,则以这种方式声明它,而不是使用局部变量。请注意此代码is very unreliable. -
所以只能这样调用静态函数?我无法将 funcPtr 添加到 MyClass。这是一个没有导出函数的给定类。
标签: c++ dll reverse-engineering