2012-03-08 88 views
1

我正在做一些练习,并且遇到了一个问题。我有DLL文件将被注入到exe文件。我必须从该exe文件重写一个函数,通过我的函数从DLL文件中。我不能干涉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; 

回答

1

你可能想看看绕行:http://research.microsoft.com/en-us/projects/detours/ 或手工补丁的目标函数跳到你的替换。

+0

是的,我看到了,但实际上我想自己做。正如我所说 - 我正在训练 – Blood 2012-03-08 18:29:55

+0

奥克,我已经做了绕道。非常感谢你! – Blood 2012-03-08 21:39:54