对于非类函数 - 我可以简单地声明要绕行的函数的偏移量,例如:
typedef int (_cdecl* SomeFunc)(char* pBuffer, int size);
SomeFunc Real_SomeFunc = (SomeFunc)(0xCAFEBABE);
...
DetourAttach(&(PVOID&)Real_SomeFunc, (PVOID)Hook_SomeFunc);
现在,绕行类的成员函数变得很困难 - detours 有一个示例:
https://github.com/microsoft/Detours/blob/master/samples/member/member.cpp
该示例已经定义了目标成员函数 - 但我不只知道将我的 DLL 注入的二进制文件中的偏移量 - 那么我该如何转换它
void (CDetour::* CDetour::Real_Target)(void) =
(void (CDetour::*)(void))&CMember::Target;
像这样:
void (CDetour::* CDetour::Real_Target)(void) =
(void (CDetour::*)(void))0xCAFEBABE;
我在这里遇到编译错误
有什么提示吗?