论坛首页 Java企业应用论坛

魔兽搜索器的反过程--魔兽发布器,java版

浏览 23234 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-10-29  
C_J 写道
那个主机互联不是简单更改UDP就可以的,底层的通讯是建立在协议上的...

而UDP和TCP同是网络层的两种协议...是建立在自己的协议栈上的...

关键是建立TCP连接,而非更改UDP包,UDP包只负责前期的地图信息传送和寻主,真正建立连接的TCP

有意向合作,但是最近还是有点忙,Email我吧:cj.yangjun@gmail.com

但是 我认为,魔兽的tcp的连接是在UDP的引导下完成的。所以只要把UDP修改。tcp就自然跟上了。这个观点我现在还没有出现过意外。
0 请登录后投票
   发表时间:2009-10-29  
我现在做的也就是简单的UDP包实现的。完全没理tcp。
0 请登录后投票
   发表时间:2009-10-29  
要是能用JAVA出一个魔兽的地图编辑器,那这个就HIGH了,可以自己弄个RPG啊、TD啊之类的
0 请登录后投票
   发表时间:2009-10-30  
恩,我是魔兽爱好者,刚大学毕业,以前就用魔兽搜索器来搜索学校主机来玩.可是一直不明白怎么回事,.那个魔兽搜索器不知道用什么做出来的300K左右,只能有搜索功能,不能聊天. 还不怎么好用,希望楼主开发一个更好用的出来. 还有我其实好早就想做一个魔兽改键,用JAVA做,一直不知道从哪里入手. 楼主要是有兴趣,可以教教我,我们一起做好不.
0 请登录后投票
   发表时间:2009-10-30   最后修改:2009-10-30
xinyu126 写道
C_J 写道
那个主机互联不是简单更改UDP就可以的,底层的通讯是建立在协议上的...

而UDP和TCP同是网络层的两种协议...是建立在自己的协议栈上的...

关键是建立TCP连接,而非更改UDP包,UDP包只负责前期的地图信息传送和寻主,真正建立连接的TCP

有意向合作,但是最近还是有点忙,Email我吧:cj.yangjun@gmail.com

但是 我认为,魔兽的tcp的连接是在UDP的引导下完成的。所以只要把UDP修改。tcp就自然跟上了。这个观点我现在还没有出现过意外。


恩,之前我的理解有些偏差...现在觉得也只是更改UDP包的source port就可以了,TCP通讯不用管..我想JAVA的Socket应该可以.....

在博客中记录的WAR3搜索主机的UDP包如下:

F7 2F 10 00 50 58 33 57  14 00 00 00 00 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 01 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 02 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 03 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 04 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 05 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 06 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 07 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 08 00 00 00 
F7 2F 10 00 50 58 33 57  14 00 00 00 09 00 00 00 


不知道楼主是否伪造过UDP包发送过,源port地址为游戏端口6112,并是否能成功建立连接???
0 请登录后投票
   发表时间:2009-10-30   最后修改:2009-10-30
LK.Bing 写道
恩,我是魔兽爱好者,刚大学毕业,以前就用魔兽搜索器来搜索学校主机来玩.可是一直不明白怎么回事,.那个魔兽搜索器不知道用什么做出来的300K左右,只能有搜索功能,不能聊天. 还不怎么好用,希望楼主开发一个更好用的出来. 还有我其实好早就想做一个魔兽改键,用JAVA做,一直不知道从哪里入手. 楼主要是有兴趣,可以教教我,我们一起做好不.


JAVA是很难做出监听系统级的按键消息的~~~
0 请登录后投票
   发表时间:2009-10-30  
C_J 写道

恩,之前我的理解有些偏差...现在觉得也只是更改UDP包的source port就可以了,TCP通讯不用管..我想JAVA的Socket应
不知道楼主是否伪造过UDP包发送过,源port地址为游戏端口6112,并是否能成功建立连接???


这个我都伪造过。就是给整个宿舍楼建立了一个假魔兽主机。大家一进魔兽就看到有人建主。就是不能加入。

我还是在帖子里面详细说明一下吧。这个程序的主要原理。
0 请登录后投票
   发表时间:2009-10-30  
xinyu126 写道
C_J 写道

恩,之前我的理解有些偏差...现在觉得也只是更改UDP包的source port就可以了,TCP通讯不用管..我想JAVA的Socket应
不知道楼主是否伪造过UDP包发送过,源port地址为游戏端口6112,并是否能成功建立连接???


这个我都伪造过。就是给整个宿舍楼建立了一个假魔兽主机。大家一进魔兽就看到有人建主。就是不能加入。

我还是在帖子里面详细说明一下吧。这个程序的主要原理。


哦,想起来了,当年我好像也是你这种情况.

你把你的Socket构造UDP包代码贴出来看看..
0 请登录后投票
   发表时间:2009-10-30   最后修改:2009-10-30
            server = new DatagramSocket(6113);   
            ip = InetAddress.getLocalHost();   
            packet = new DatagramPacket(warSearch, 16, ip, 6112);   
            pub = new DatagramPacket(warPublish, 16, ip, 6112);   
            //1-----发送搜索包。这里就开始骗人了!~~哈哈   
              server.send(packet);  



-看到代码,实际上你是没有更改发送UDP包的源端口的..,而是开启的6113端口( server = new DatagramSocket(6113);  )

-所以远程主机返回的UDP包是发送给你本地的6113,所以你需要监听6113端口,再转发给6112端口的WAR3进程.(我之前也是你这个思路....

-这种思路带来的问题是本地的6112端口的WAR3进程收到你骗过来的UDP包后只知道是本地6113端口发送过来的,而并不知道远程主机..这样游戏的所有UDP和TCP包你都必须转发.



所以可以换个思路,在发送UDP pub包的时候,就更改UDP包的源发送端口为6112,而非6113端口!!这是重点,但是貌似JAVA要伪造端口很难..

如果无法实现的话,那就只能那样做了,不过聊天的功能并不依赖游戏本身,就完全可以开个端口来通讯了``




0 请登录后投票
   发表时间:2009-10-31  
C_J 写道

-看到代码,实际上你是没有更改发送UDP包的源端口的..,而是开启的6113端口( server = new DatagramSocket(6113);  )

-所以远程主机返回的UDP包是发送给你本地的6113,所以你需要监听6113端口,再转发给6112端口的WAR3进程.(我之前也是你这个思路....

-这种思路带来的问题是本地的6112端口的WAR3进程收到你骗过来的UDP包后只知道是本地6113端口发送过来的,而并不知道远程主机..这样游戏的所有UDP和TCP包你都必须转发.



所以可以换个思路,在发送UDP pub包的时候,就更改UDP包的源发送端口为6112,而非6113端口!!这是重点,但是貌似JAVA要伪造端口很难..

如果无法实现的话,那就只能那样做了,不过聊天的功能并不依赖游戏本身,就完全可以开个端口来通讯了``



关键在这::::===========
C_J 写道



关键::-这种思路带来的问题是本地的6112端口的WAR3进程收到你骗过来的UDP包后只知道是本地6113端口发送过来的,而并不知道远程主机..这样游戏的所有UDP和TCP包你都必须转发.


回到原文::
xinyu26 写道
为什么不要客户机能直接和魔兽建立tcp?
因为在地图包里面包含有魔兽的端口信息(6112)。魔兽会连接到主机ip+6112端口的。这就和魔兽发布器无关的原因。发布器只是引导一下udp包。



因为地图包的最后两个字节包含端口信息!
所以无论什么端口发给魔兽。魔兽都能正确判断游戏主机的端口!!
例如我是用6113端口给魔兽6112端口发送地图包。
但是魔兽会连接到6112端口去。而不是6113。这点是关键所在!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics