Posted on 2008-02-26 16:04
Fox 閱讀(2614)
評論(10) 編輯 收藏 引用 所屬分類:
G游戲編程
Author: Fox
//-----------------------------------------------------------------------------------------------------
此篇僅是對反脫機外掛的一點思考,其他安全問題如登錄驗證、消息驗證等更多的是涉及邏輯功能。
//-----------------------------------------------------------------------------------------------------
春節剛回來的時候,回公司去和Soft聊到了自己的畢業論文的問題,因為專業的關系,我必須給出一些安全方面的考慮,正是因為這一點,我當時開題時就立足對安全的無縫游戲世界進行思考。只是在游戲本身的安全性上,一直也沒有一個好的出發點,這兩周還是在考慮這個問題。
這一點,有我入行時間不長,對于游戲本身、玩家與開發者(含游戲及外掛、木馬開發者)之間的關系并沒有一個很好的把握,更多的是由于我對游戲中的可用的安全技術不了解,尤其是對應用層安全協議不了解,對破解技術也不了解,導致無所適從。
《游戲編程精粹1》中Andrew Kirmse在《在線游戲的網絡協議》一文中對常見的篡改報文、報文重放和逆向工程有講述。預防報文篡改的有效防御是哈希校驗,現在大多游戲是使用MD5算法,而且網上開源的MD5代碼也很多。對于報文重放,Andrew提到了使用線性疊加隨機數的狀態機,具體原理和實現方式因為沒有提到太詳細,還要針對實際應用繼續學習L。然而,由于客戶端既是報文的接收者也是發送者,因此,客戶端包括了完整的加解密算法。一旦客戶端被逆向,上述措施就變成了破解者背后的煙霧彈,完全失去意義。
提到反外掛,Joe的看法也是說這個東西和具體某一個技術關系不大,還是要從機制上去看。加不加密對于普通玩家沒有意義,對于專業從事逆向的人更是也沒有意義,所有單純考慮加密是沒有效果的。對于免費游戲,外掛往往是打錢公司的工具,你封他的號,他再建就是了,代價幾乎為0,而一般付費游戲(像魔獸世界)一個帳號對應一個CDKey,一個CDKey就要幾十塊錢,這個封起來就有點咬牙了。
說到這里,不妨換個思路:為免費游戲加入CDKey。我一款游戲從內測、封測到公測,讓玩家充分參與體驗,在被逆向且外掛橫行之前,按正常邏輯運營。進而假定我這一款游戲在公測之后,讓玩家感覺魅力十足。引導玩家并實施CDKey,一個CDKey大約會需要玩家付出些許Money以示誠意,在玩家游戲過程中,會階段性向玩家贈送部分增值道具。老玩家在進入新區時,需要申請繼續使用原CDKey。這樣一來,外掛就不會肆無忌憚了。
BTW,這個思路沒有從技術角度解決問題,下面再來看一種略微關乎技術實現的解決方案:動態驗證。在游戲運行期間,會不定期的向玩家發送驗證碼,客戶端在收到消息后,必須在一定時間內響應,向服務器確認收到的驗證碼,否則將被強制下線,再次登錄后將更加頻繁的收到驗證碼,直到用其良好的回復次數累積消除其不良記錄為止。為了盡量減少因此給玩家造成的不友好體驗,在任務場景、重要PK場景或者高等級玩家活動場景,驗證碼的發送和確認可適當放寬。
當然,如果外掛中加入了圖形識別,這一招也未必奏效。
不知是道高還是魔高,可以肯定的一點是:大家都是在利益的驅動下絞盡腦汁。
//-----------------------------------------------------------------------------------------------------
春節回來之后,一直比較忙(確切的說是比較懶),沒有更新,宜更加勤奮。
最近工作涉及到數據庫編程,一點點對數據庫的讀寫居然耗掉我3天時間,汗!
//-----------------------------------------------------------------------------------------------------