请教如何得到指定进程和网络通信的数据包和阻止指定IP的数据包呢?

时间:2022-08-04 04:09:36
是这样的,我们有个游戏服务器,我希望可以写个程序,得到每个通过网络链接游戏服务的客户端的IP和客户端发送过来的游戏信息,比如说客户端游戏的ID等等

需要用什么方法实现呢?数据没有加密。

还有就是客户端的游戏中的用户名需要用什么样的方法来得到呢?是不是分析数据包呢?

小弟是VC++的初学者。但是现在我们网络战队天天被人攻击服务器。如果我能够写一个程序获得每个连接游戏服务器的网络请求(并且得到数据包内玩家的名字)我就能有办法防御这种攻击。否则我们的这个网络组织就要完了,我们才成立1个来月,但是没有技术力量。我已经为了这个问题连续奋战了2个星期了。没晚都是开通宵。但是自己的编程水平太低和没有经验。所以根本不知道应该怎么做!来这里希望求助高手!救救我们的游戏社区吧!

(攻击的原理是,游戏服务器里不能出现两个同样玩家名字的用户,否则会造成所有客户端被弹出服务器。)

7 个解决方案

#1


游戏服务器里不能出现两个同样玩家名字的用户,否则会造成所有客户端被弹出服务器。
  这明显是服务器有bug, 找补丁

编程方式也可以实现, 比较麻烦, 抓保可以wincap, 驱动, APIHook...

方法:
 抓保分析得到在线的用户名列表, 如果有重复玩家名字登陆就丢弃该登陆包

#2


楼上的谢谢先!

如果有patch的话,我们早就解决了,所以肯定目前没有这个补丁!

wincap抓包,谢谢我这就去下载和研究。

其实这个程序有人写出来了,但是那个人要收费,而且是每台服务器收1000块钱。

我们是网络社区不是公司和有钱人,我们如何可能去花这样的钱啊.....

所以我决定慢慢研究!即便研究不出来,我不会放弃的!因为我不甘心!

楼上的方法正是我想象的中的。

关键就是如何写一个抓包,并且分析包的程序。

关键点在那里?

Hook到那个进程可以得到指定端口的数据包呢?

是游戏本服务进程本身?还是别的地方。因为我分析了之前那个人编写的程序,他好像用到了winsock2 他做了一个msgview来得到消息,然后主要功能实现都在他自己写的一个dll里面。所以我怀疑他用了hook,但是好像并非hook到游戏进程。而是别的地方。

#3


希望可以有高手能指点一下,如果我要边学边写,那么我需要一些重点。研究方向的重点。因为
如果是正常的程序员都是先慢慢的学习,然后在工作中遇到问题后,可以通过以前所学来解决,或者是只需要在已有的基础上

再研究学习。可是我们不同,我们是为了解决问题而学习问题和学习方法,所以需要高手们帮助我们给我们些方向。这样我们

可以少走很多弯路!希望高手们可以同情一下我们这些游戏社团的难处,因为我们本身也是免费服务大众玩家,因为喜爱一个

游戏而走到一起。技术力量很薄弱!但是我们有热情有激情!希望高手能够帮我们一把!谢谢!

#4


2楼的朋友,我下载了WinPcap但是安装后只有两个文件。一个是rpcapd.exe
一个是卸载用的Uninstall.exe文件。我觉得很奇怪,然后到网上搜索了一下,
原来这个winpcap只是提供了API,但是我还是有些疑虑,所以问问我到底有没
有下载对呢?是不是就是这个呢?然后你的意思是不是利用它提供的API来写
抓包和丢弃数据包的程序呢?

#5


引用楼主 Pabala 的帖子:
攻击的原理是,游戏服务器里不能出现两个同样玩家名字的用户,否则会造成所有客户端被弹出服务器。)

这明显是服务器的BUG所致。

那个人的程序估计是Hook接收数据包的函数,比如WSARecv,关键是如何判断,个人感觉还是有难度的


http://www.winpcap.org/devel.htm

WinPcap的SDK


另外,pcap只提供监听,拦截数据包是做不到的

#6


谢谢楼上的帮助。

那么我的理解是winpcap的二次开发包可以帮助我们开发一个抓包用的程序,是这样吗?

hook到WSARecv后得到接收到的数据包后,那么假设我可以写出判断,那么我可以通过我的

判断阻挡或者截住指定的数据包吗?

#7


刚才看了MSDN中关于WSARecv函数的使用,那么我是该hook到哪里才能接收这些消息呢?
??

#1


游戏服务器里不能出现两个同样玩家名字的用户,否则会造成所有客户端被弹出服务器。
  这明显是服务器有bug, 找补丁

编程方式也可以实现, 比较麻烦, 抓保可以wincap, 驱动, APIHook...

方法:
 抓保分析得到在线的用户名列表, 如果有重复玩家名字登陆就丢弃该登陆包

#2


楼上的谢谢先!

如果有patch的话,我们早就解决了,所以肯定目前没有这个补丁!

wincap抓包,谢谢我这就去下载和研究。

其实这个程序有人写出来了,但是那个人要收费,而且是每台服务器收1000块钱。

我们是网络社区不是公司和有钱人,我们如何可能去花这样的钱啊.....

所以我决定慢慢研究!即便研究不出来,我不会放弃的!因为我不甘心!

楼上的方法正是我想象的中的。

关键就是如何写一个抓包,并且分析包的程序。

关键点在那里?

Hook到那个进程可以得到指定端口的数据包呢?

是游戏本服务进程本身?还是别的地方。因为我分析了之前那个人编写的程序,他好像用到了winsock2 他做了一个msgview来得到消息,然后主要功能实现都在他自己写的一个dll里面。所以我怀疑他用了hook,但是好像并非hook到游戏进程。而是别的地方。

#3


希望可以有高手能指点一下,如果我要边学边写,那么我需要一些重点。研究方向的重点。因为
如果是正常的程序员都是先慢慢的学习,然后在工作中遇到问题后,可以通过以前所学来解决,或者是只需要在已有的基础上

再研究学习。可是我们不同,我们是为了解决问题而学习问题和学习方法,所以需要高手们帮助我们给我们些方向。这样我们

可以少走很多弯路!希望高手们可以同情一下我们这些游戏社团的难处,因为我们本身也是免费服务大众玩家,因为喜爱一个

游戏而走到一起。技术力量很薄弱!但是我们有热情有激情!希望高手能够帮我们一把!谢谢!

#4


2楼的朋友,我下载了WinPcap但是安装后只有两个文件。一个是rpcapd.exe
一个是卸载用的Uninstall.exe文件。我觉得很奇怪,然后到网上搜索了一下,
原来这个winpcap只是提供了API,但是我还是有些疑虑,所以问问我到底有没
有下载对呢?是不是就是这个呢?然后你的意思是不是利用它提供的API来写
抓包和丢弃数据包的程序呢?

#5


引用楼主 Pabala 的帖子:
攻击的原理是,游戏服务器里不能出现两个同样玩家名字的用户,否则会造成所有客户端被弹出服务器。)

这明显是服务器的BUG所致。

那个人的程序估计是Hook接收数据包的函数,比如WSARecv,关键是如何判断,个人感觉还是有难度的


http://www.winpcap.org/devel.htm

WinPcap的SDK


另外,pcap只提供监听,拦截数据包是做不到的

#6


谢谢楼上的帮助。

那么我的理解是winpcap的二次开发包可以帮助我们开发一个抓包用的程序,是这样吗?

hook到WSARecv后得到接收到的数据包后,那么假设我可以写出判断,那么我可以通过我的

判断阻挡或者截住指定的数据包吗?

#7


刚才看了MSDN中关于WSARecv函数的使用,那么我是该hook到哪里才能接收这些消息呢?
??