我正在做一些练习,但我遇到了一个问题。我有DLL文件,将被注入exe文件。我必须通过我的函数从DLL文件覆盖该exe的一个函数。我不能干涉exe文件,但在DLL中我可以。我得到了必须替换的函数的地址(由GetProcAddress()函数获取)现在我必须将此地址重定向到我的函数。我想要实现的是当exe将调用函数时,他将调用不是他的内部函数,而是来自dll的函数。我希望我能清楚自己。这就是函数头部的样子:
int ( func )( float, int );
我试着这样做:
typedef int ( *func_ptr )( float, int );
func_ptr myFunction;
myFunction = (*func_ptr)GetProcAddress(hModule, func_name);
*myFunction = newFunction;
答案 0 :(得分:1)
您可能想看看Detours:http://research.microsoft.com/en-us/projects/detours/ 或者通过跳转替换来手动修补目标功能。