我第一次尝试使用 Detours 来挂钩一个函数。我是逆向软件和挂钩的新手,所以我可能在这里错过了一些重要的东西。
我正在尝试将此功能用作挂钩:
typedef int (__thiscall* func_type)(LPVOID*, LPVOID*, DWORD, BOOL);
LPVOID hookaddr = 0;
int __fastcall testhook(LPVOID* pThis, void* _EDX, LPVOID* object, DWORD hp, BOOL self)
{
std::cout << "Hooked" << std::endl;
func_type originalFunc = (func_type)hookaddr;
return originalFunc(pThis, object, hp, self);
}
问题在于 hooked 函数似乎遵循__thiscall约定,而 Detours 似乎不允许这样做?我尝试在我注入的 dll 中混合__thiscall和__stdcall/__fastcall约定,但无法获得任何工作。我要么得到错误的ecx值,要么由于无效的esp.
知道我可以在这里尝试什么吗?