2012-08-29 72 views
1

可能重複:
How to get a specific socket and close it關閉插座/端口連接

我想知道的方式來關閉從一個不同的進程中存在的套接字連接(在Windows)。我沒有處理套接字,我只知道端口號。我想我可能需要編寫內核級代碼來執行此操作。 C#或C++中的任何引用?

+0

也可能有所幫助:http://stackoverflow.com/questions/1337392/how-can-i-enumerate-sockets-on-a-given-windows-process – IAbstract

回答

2

有很多方法可以做到這一點。

其中之一是注入一個DLL到目標進程,它將等待一個包或其他信號由主進程發送,然後關閉套接字。

enter image description here

或者你可以只發送一個數據包已經打開的插口,將觸發異常,因此,插座的缺失,但我懷疑這將是比任何注入DLL更容易。

或者你可以發送一個FIN信號給開放的套接字。

+0

謝謝克里斯蒂安。你有這樣的代碼示例嗎?請注意,我無法修改目標進程的源代碼。你的意思是注射會在運行時發生,對吧? – ActiveLeo

+1

@ActiveLeo我可以提供注射的代碼。但是,您很可能必須對目標進程進行逆向工程才能找到套接字的地址。如果你嘗試發送數據包到一個已經打開的套接字,這篇文章可能會有幫助http://stackoverflow.com/questions/11876083/using-a-third-party-application-to-send-data-to-an-already -open-tcp-connection – Christian

+0

我知道端口號,但是什麼是套接字地址? – ActiveLeo