C#如何拦截所有数据包并通过挂钩找出IP?

时间:2015-10-15 05:41:23

标签: c# hook pinvoke ip-address intptr

其实我有三个问题:

1-根据Nazar Grynko回答,是否只拦截三个功能(发送,接收和连接)将帮助我预测机器中的所有数据包?

2-如果我挂钩了这三个函数,如何从P / Invoked本机函数中获取指向sockaddr结构的IntPtr?

3-发送,并且recv没有sockaddr,那么如何找出地址呢?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 您描述的功能是POSIX标准的一部分。这意味着当您在Windows上使用这些功能时,您实际上正在调用最终转换为system call的包装器。您可以在不使用此功能的情况下发送数据包(例如,使用Windows API)。

  2. 请参阅第一个答案。这对你没有帮助。您还必须为所有流程提供挂钩。

  3. 您描述的功能使用的file descriptorPOSIX构造,并且是在其他系统上模拟的用户模式。

  4. 要检查您的流量,您必须使用能够为您完成此操作的驱动程序。您可能希望查看Pcap.Net这是一个完全针对您的问题的C#项目,并提供必要的驱动程序和API。