我想监听发往某个程序端口的数据,端口号已知
解决方案 »
- 怎样从矢量字库取得韩文点阵?
- 一个线程结束时,被它所创建的线程 会不会 也跟着结束?尽管他们还没结束。
- CListCtrl的一个问题 ̄ ̄ ̄ ̄ ̄ ̄ ̄_______||||||||
- 求救!有关浏览器控制方面的问题!
- WM_APP和WM_USER有什么区别?
- 100分:请问repeatable的按钮怎么实现?指点一下也好。
- 帮忙说一下:CListBox的成员函数。小弟是菜鸟。请多指点。
- 有关onsize问题_高分有送.
- 请问怎样获得打印机文档属性对话框,只有三个tab页的那个?(不是打印,打印机属性对话框)
- 怎样移动控件位置,如CEDIT,我用了MOVEWINDOW,它死也不动
- 求救!tab键的设置
- 怎样在dll中获得调用它的应用程序的名称?
1:使用替换sock32.dll的方法
2:自己做端口映射,转发数据
回想就是开一个线程,用sock方法
http://www.codeguru.com/network/ipmon.html
1、stub dll方式,你将一个wsock32.dll放在目标程序相同的目录下面,你的wsock32.dll输出和系统wsock32.dll一样的函数,目标程序将首先装你的dll,在send、recv函数里面你可以得到发送和接受到的数据。
2、注一个dll到该进程,钩send、recv等winsock api函数。
3、raw socket,截获通过你的机器出去的数据。
4、winpcap,主页:winpcap.polito.it,这是一个很著名的网络俘获包,很多例子,很多人用来俘获网络数据,我也用它开发了一个网络数据包分析工具。
5、spi(service provider interface),winsock2的服务接口,是一个ring3模式的dll,在这里也可以截获数据。
6、ndis驱动程序,这是最麻烦的一种方式,ring0模式,对于你的需求其实用不上这么麻烦。
NET_API_STATUS NetMessageBufferSend(
LPCWSTR servername,
LPCWSTR msgname,
LPCWSTR fromname,
LPBYTE buf,
DWORD buflen
);至于监视这个函数,你可以用api钩子
如果只是想监听端口数据:可以下一个Analyzer可监听WINDOWS下的所有“物理”通信,很好用的,在http://analyzer.polito.it/有,注意Analyzer只是一个外壳,还要安装WinPcap(地址同上),要求高一点就用Ethereal,也是用的WinPcap接口http://www.ethereal.com有下载。但是界面是unix,虽然功能强大却不太习惯。实际上单单用WinPcap里面带的一个console工具就可以满足大部分需要。包括各种IPX,IPv4,IPv6协议,一句话,只要是网卡能收到的(发送的)都能看到,当然,只是在局域网内。
想在程序中加入这个功能的话,下载WinPcap的原代码慢慢研究吧。据说是用的NDIS的什么特性。