【发布时间】:2015-10-15 05:41:23
【问题描述】:
其实我有三个问题:
1- 根据Nazar Grynko 的回答,是不是只截取三个函数(send、recv 和 connect)才能帮助我预测我机器中的所有数据包?
2- 如果我连接了这三个函数,如何从 P/Invoked 本机函数中获取一个指向 sockaddr 结构的 IntPtr?
3- send 和 recv 没有 sockaddr,那么如何找出地址呢?
提前谢谢你。
【问题讨论】:
-
监控机器上的所有流量比从用户模式代码中挂钩三个函数更难。这将需要在内核模式下完成。意思是司机。不适用于 C#。
-
@DavidHeffernan ,C# 中的 Easyhook 和 deviare 怎么样。另一件事,转向捕获数据包工具(如 SharpPcap)是否更好。或坚持使用钩子。
-
我以为你说你想检测机器上的所有数据包。您不会通过在用户上下文中运行的桌面应用程序来执行此操作。
-
@DavidHeffernan 我是这些东西的新手,所以你能解释一下,我该怎么办。我的目标是监控我机器中所有进程的网络流量(传出或传入)。我从 Pcap(sharppcap) 开始,但它在不知道接收或发送它的进程的情况下捕获数据包,我试图从标头中检索端口号并执行 netstate 但仍然不是所有数据包都可以关联到一个进程。所以,我转向了挂钩,通过挂钩所有导致网络数据包的系统调用,我认为它可以实现我的目标。
标签: c# hook pinvoke ip-address intptr