2012-05-15 48 views
2

我有一個程序,它加載庫test.dll,這個庫使用ws2_32.dll來創建套接字和發送/接收數據包。我可以注入我的C++庫到這個過程,但不知道如何將函數「socket」,「accept」等函數的test.dll調用例如。有人可以幫我解決這個問題嗎? 謝謝!攔截套接字函數(windows)

+0

請說明你自己到底做了些什麼以及你收到了哪些錯誤。 – vyegorov

回答

2

您需要鉤住accept函數。 您可以使用庫例如MS Detours(早期版本是免費的,你可以使用版本1.5,只是谷歌它)。 呼叫

DWORD a=DetourFindFunction("Ws2_32.dll","accept") 

它會給你的指針接受功能。 然後你可以繞道它通過呼籲

DetourFunction(a,&Yourfunction) 

DetourFunction將新指針返回爲「接受」,因此請確保在「YourFunction」的末尾調用它以確保程序不會崩潰。

或者,您可以使用Inlineassembler自己重定向函數。當然這要複雜得多。

+1

您不需要彙編器來重定向DLL函數,您可以直接修改PE Imports表。 –