精華區beta WarCraft 關於我們 聯絡資訊
嗯嗯! 好久沒有在魔獸版發表比較正經的文章了,今天要討論的主題就是 Warcraft3 是怎麼樣 顯示玩家名稱的。也就是當有人加入一個 Game 的時候,顯示出來的玩家名稱是怎麼產生 的。當然,因為顯示名稱的原理和更名外掛的原理是一體兩面,因此本篇文章也會講到更 名外掛的原理。所以在發這一篇文章之前,我已經做好了被水桶三天的心理準備了。畢竟 外掛是「嚴禁討論」。不過要浸我水桶之前也要注意一下我的結論,因為該因這條版規被 禁水桶的文章可能多得是。 正文開始! 眾所周知的, Warcraft3 除了在玩 Battle.net 玩天梯以外,其它時候連線的方式都是 p2p 的連線方式。話說雖然是 p2p ,但基本上仍是以開 Game 的人(以下稱 Host)為連結 點,而形成一個星狀的網路(也就是所有的人都連到 Host ,由 Host 轉送 Action),也 因此,當 Host 斷線時,若找不到替代的 Host ,便會造成所有的人一起斷線。附帶一提 ,因為所有人的連線都是連到 Host ,所以 Host 只要切斷連線,就會造成別人斷線,這 也就是踢人外掛的原理。當然,這樣的功能是 Host 限定的。要是你不是 Host 還是想要 切斷連線,只會把自己踢掉而已。 由於每一個人在進入一個遊戲的時候,就是連接上 Host 的時候。因此在建立連線開頭的 封包,就會送出加入遊戲的使用者資訊,其中最重要的資訊當然就是使用者的 ID 。由於 這個連線是加入遊戲的人與 Host 自己建立的連線,與 Battle.net Server 或 PvPGN Server 都沒有關係,因此 Server 是不會去管使用者送出去的封包的。也因此,使用更 名外掛, Server 是不可能知道的,因為他從頭到尾都不知道使用者送了什麼出去。 要改變送出去的 ID 可以從兩個地方動手腳。以目前世面上常見的 NameSpoofer 而言, 主要是在 Warcraft3 的記憶體內存資料動手腳,當使用者登入 Battle.net 時, Warcraft3 會把登入的使用者名稱紀錄在記憶體裡面,等到需要與其它人連線時,就依照 先前儲存的資料,把使用者 ID 送出去。如果記憶體裡面的資料被修改, Warcraft3 又 沒有檢查機制,當然就無法發現。因此在送出 ID 時就會送出改過的 ID ,也就是更改了 使用者的名稱。 第二個可以改變 ID 的地方,可以以 GGC 為例。 GGC 在使用者登入的時候會將使用者的 ID 紀錄起來。當使用者任意輸入 ID 要送出的時候, GGC 會攔截封包,並把使用者設定 的 ID 換成 GGC 登入時的 ID 。因此其它人看到的 ID 還是 GGC 登入的 ID ,而不是使 用者自己設定的 ID 。這兩種更改 ID 的原理有些不同,前者是讓魔獸誤以為自己用的是 另外一個 ID ,因此不論是使用 NameSpoofer 的人或其它玩家,但到的都是更改過的 ID 。而後者只是修改封包,因此只有其它玩家看到的是被 GGC 修改的 ID ,使用者看到的 仍然是原本設定的 ID 。 由這個角度來看,目前 GGC 運作的機轉是不折不扣的更名外掛,它會強制將使用者的 ID 換成 GGC 登入的 ID ,並且竄改 Warcraft3 送出去的封包。而且 GGC 目前並沒有被 Blizzard 官方認可,它仍是一個網際網路配對的平台。因此討論 GGC 應該符合本版討論 外掛的版規,不過看起來大家都覺得 GGC 更名沒啥了不起,所以我也就大大方方地來發 文了。 如果我們把 Warcraft3 當作是被修改的對象,可以有以上兩條路徑來修改 ID 。事實上 GGC 本身也是一個 Standalone 的程式,因此要修改其 ID 也一樣有上面兩條路徑可以實 作出這樣的功能。其一,就是修改 GGC 記憶體內存的資料,藉以修改 GGC 將送出的 ID ,達到更改 ID 的目的。其二,就是攔截 GGC 送出去的封包,再把內容改掉,同樣可以 達到修改 ID 的目的。事實上我認為更改使用者名稱根本是「無法防備」的事情。主要原 因就是來自於 Warcraft3 本身的連線是 p2p 的。只要資料是在使用者端,使用者就有權 力(指的是電腦安全性上的權力)作修改。如果要徹底防範這樣的問題,解決之道可能就像 OLG 一樣,強迫所有的連線都經過 Server ,如此一來 Server 就可以避免使用者送出的 資料經過不當的修改,然而這樣會使 Server 的流量大增,根本不可行。 所以,當有人問說, Warcraft3 可不可以改名,我會大大方方地說「可以」。當有人問 我 GGC 可不可以改名,我可能不會那麼大方,但我還是會說「可以」。這些事情原理上 都是做得到的,而且以 Warcraft3 的現況來看,要防堵成功的可能性也很低。也因此我 認為面對外掛橫行的世界,最好的方式還是道德教育,而不是道高一尺魔高一丈的武力競 賽,當眾人都珍惜遊戲的機會,自然就會有好遊戲。 -- 我實實在在的告訴你們,一粒麥子不落在地裡死了, 仍舊是一粒,若是死了,就結出許多子粒來。 約翰福音 12:24 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.178.70
sitos:如果講錯,有人願意指正的話,請有心理準備來陪我水桶。 06/03 14:17