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