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