2012-03-08 77 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