魔獸區域網路跨網段聯機原理淺析

來源:互聯網
上載者:User

研究(準確的說,應該用“折騰”)魔獸區域網路聯機的時候,一開始是猛的自己抓包分析,大概的弄清楚資料含義了,可是不太相信自己,就上網拚命的搜資料,最後發現也有不少的人在研究這個東西...

心語的專欄

http://blog.csdn.net/xinrui5577/archive/2009/09/16/4560590.aspx

看到他的文章,給了我不少的肯定,更佩服心語前輩(給過我啟迪的都是前輩),用java來實現~其實只要懂java,學C++是很easy的,程式設計語言無界限嘛……

下面是我對他文章的理解:

 

首先魔獸在進入區域網路的時候它就開始啟用通訊端並綁定udp通訊端到本地連接埠6112(預設連接埠),開始向255.255.255.255即同一網段廣播詢問資訊

內容:F7 2F 10 00 50 58 33 57 14 00 00 00 00 00 00 00
我的魔獸版本是1.20E所以第九個位元組是0x14,從對WC3 Game Searcher抓包來看,1.21 是15,1.22是16...

 

war3.exe只把這個UDP資料包發給同網段的IP,所以,如果你想要搜尋不同網段的IP就只需要把這個包發給他的6112連接埠就行了...

當他的機子上的war3.exe在6112連接埠收到這個包以後,就會往你的6112發回饋UDP包,如果你不想做其他什麼事而只想讓他能聯機就行的話,給他發了這個UDP包就萬事OK了,工作完成了,接下來的事war3.exe會處理...

如此看來,要實現聯機也是非常之簡單的...

 

而當你自己建好主機以後,war3.exe就會廣播建主資訊

內容:F7 32 10 00 01 00 00 00 01 00 00 00 04 00 00 00

告訴別人說 我建主了……

同樣,如果你要讓不同網段的機子知道你建了主,只要往他的6112連接埠發這個訊息就行了,在他的war3.exe接到這個訊息後接下來的連結war3會自己搞定...

 

所以,如果你寫個程式在自己建主機的時候發送  建主資訊包  的話就能實現讓不同網段的機子加入你的主機,發送  詢問資訊包 的話就能實現加入不同網段的主機...

 

當然,要實現像WC3 Game Searcher 一樣強大的功能就繼續分析魔獸資料包羅...

監聽本地的6112連接埠,在他發UDP包的時候就把這個包轉寄到不同網段,這就要用到原始通訊端了……

用UDP協議也行,不過要用到SO_REUSEADDR屬性,連接埠重用,但是這裡有個問題,就是當你把通訊端重綁定到6112連接埠時,魔獸退出了區域網路,而當魔獸要再進區域網路的時候就會出現 不能串連網路 的錯誤,因為連接埠被你的socket綁定了嘛,魔獸的通訊端是沒設定SO_REUSEADDR屬性的...

 

然後後面就是一個詳細的主機資訊包,有主機名稱,地圖資訊,當前遊戲人數等,我就不繼續分析啦,有興趣就看心語的那篇文章……

 

這裡提供一個思路:

在對戰平台玩魔獸就不會不知道有個工具叫T人掛,其原理就是當你是主機的時候斷開與玩家的TCP串連,而目前大部分的T人掛都不能做到指定玩家T人,只能根據進主機的先後順序看分配的連接埠大小對應關係來判斷,有個工具除外,就是Shadow French 的W3XCustomKick

他是讀魔獸的記憶體來得到玩家ID跟連接埠號碼的對應關係的(巨牛B啊),有興趣的可以拿著Smart Check去慢慢跟蹤,不過我保證你看到後會想哭……如果從TCP串連入手的話,就能很容易得到玩家ID跟連接埠號碼的對應關係,但前提是你得從建主機前就開始監聽……

下面是同學加入我主機時發過來的一個TCP包

00000000  F7 1E 32 00 02 00 00 00  C4 D4 85 03 00 E0 17 01   ..2..... ........
00000010  00 00 00 57 6F 72 6C 64  43 72 65 61 74 65 72 00   ...World Creater.
00000020  01 00 02 00 17 E0 3A 14  58 21 00 00 00 00 00 00   ......:. X!......
00000030  00 00                                              ..
從上面可以看到使用者名稱就是World Creater

 

挺邪惡的,有興趣的就研究下……

本文提到的工具下載:

抓包工具:

WSockExpert

http://download.csdn.net/source/1820067

SmartSniff

http://download.csdn.net/source/1820078

 

附上我寫一個樣本lancraft,裡面整合了簡單的MH功能

WC3TOOL

http://download.csdn.net/source/1819854

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.