2012-08-29 73 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