序
你見到過哪些NB的外掛?
外掛的分類:
反外掛的分類:
國(guó)內(nèi)外當(dāng)前的狀況
國(guó)外
國(guó)內(nèi)
外掛的研究
1.模擬類
2.內(nèi)存修改類外掛
3.封包類外掛
3.脫機(jī)類外掛
網(wǎng)絡(luò)游戲封包加密技術(shù)
異或加密
RC4 加密
RSA 加密
網(wǎng)絡(luò)游戲外掛檢測(cè)技術(shù)
鼠標(biāo)鍵盤模擬檢測(cè)技術(shù)
游戲數(shù)據(jù)修改檢測(cè)技術(shù)
外掛實(shí)現(xiàn)與反外掛舉例
射擊類外掛
游戲?qū)崿F(xiàn)要怎么預(yù)防呢?
雜談
序
全球的網(wǎng)絡(luò)的幾乎普及到了每個(gè)角落,伴隨著全球經(jīng)濟(jì)的發(fā)展與進(jìn)步,游戲行業(yè)的玩家越來越多,許多違法犯法的活動(dòng)也在網(wǎng)絡(luò)游戲行業(yè)越來越多,也變得越來越多樣化。例如 FPS 射擊類游戲,這種以自由射擊為藍(lán)本的的競(jìng)技類游戲,深受網(wǎng)絡(luò)外掛的毒害和侵?jǐn)_,極大地破壞了競(jìng)技類游戲的公平性,由于競(jìng)技類游戲的功利性,很多新手玩家想要獲得成就感,給外掛提供了滋生的環(huán)境,并且這類游戲的一些關(guān)鍵數(shù)據(jù)只能保存在本地客戶端,不能實(shí)時(shí)上傳服務(wù)器導(dǎo)致了外掛的泛濫,而外掛制作者通過售賣外掛非法獲得巨額利潤(rùn),所以防御和解決網(wǎng)絡(luò)游戲中的非法行為已經(jīng)迫在眉睫。
你見到過哪些NB的外掛?
CF:
透視(能用另一種顏色標(biāo)識(shí)墻后敵人),
自瞄(瞬間自動(dòng)瞄準(zhǔn)敵人),
自動(dòng)開槍(當(dāng)槍在敵人身上會(huì)自動(dòng)開火),
飛天(人能走到地底下),
遁地(同上),
無后座力(一般開槍,瞄準(zhǔn)方向會(huì)上揚(yáng))
遠(yuǎn)程裝包(C4遠(yuǎn)程安裝)
DNF:
人物變大型外掛(這類外掛可以讓角色瞬間變超大,技能也會(huì)隨之變大)
全技能無消耗 (就是任何一個(gè)職業(yè)可以使用這個(gè)職業(yè)所有技能)
召喚某一個(gè)東西(召喚一些強(qiáng)力的怪)
全圖秒殺 (一鍵全圖的怪都死了)
召喚怪物類 (召喚一只或多只地下城里的怪物來幫你刷圖)
冒險(xiǎn)島:
飛天,吸怪,無敵,自動(dòng)攻擊
QQ炫舞:
自動(dòng)perfect
爐石傳說:
自動(dòng)上分(利用深度學(xué)習(xí),自動(dòng)戰(zhàn)斗出牌)
LOL:
自動(dòng)躲技能,神走位,自動(dòng)戰(zhàn)斗
韓服一些游戲(檢測(cè)很弱):
修改本地txt的幾個(gè)0 1
以上只是舉一些例子,其實(shí)游戲外掛已經(jīng)有很多很多了,在國(guó)外深圳有專門的論壇去學(xué)習(xí),分享外掛制作的方法,比如看雪:link.
外掛的分類:
現(xiàn)如今游戲外掛的種類繁多,而且是每個(gè)網(wǎng)絡(luò)游戲?qū)?yīng)一種系列的外掛,針對(duì)某一個(gè)游戲,其外掛商家可能就多達(dá) 100 多家,而這些外掛所提供的的針對(duì)該游戲的功能達(dá)到幾十種,所以面對(duì)這么多的外掛很有必要對(duì)外掛做一些分類,方便分析和總結(jié)外掛的技術(shù)和特點(diǎn),傳統(tǒng)的外掛分類方法籠統(tǒng)的把外掛分為兩大類:非修改游戲數(shù)據(jù)類外掛和修改數(shù)據(jù)類外掛,其具體功能如下:
分類 功能
非修改游戲數(shù)據(jù)類外掛 通過模擬鍵盤鼠標(biāo)操作,將網(wǎng)絡(luò)游戲中很繁瑣的動(dòng)作或者重復(fù)的無聊的很費(fèi)玩家時(shí)間的流程和任務(wù)使用外掛幫助玩家完成,達(dá)到方便和解放玩家的目的
修改游戲數(shù)據(jù)類外掛 修改游戲數(shù)據(jù)類外掛是由外掛獲取服務(wù)器與客戶端通信產(chǎn)生的網(wǎng)絡(luò)游戲封包進(jìn)行修改或修改客戶端本地的內(nèi)存數(shù)據(jù),并將這些修改后的封包或者內(nèi)存地址發(fā)送給服務(wù)器端,得到外掛想要的結(jié)果和數(shù)據(jù),外掛通過修改封包信息和客戶端內(nèi)存地址,使角色人物的屬性和狀態(tài)發(fā)生改變
反外掛的分類:
由于在國(guó)外像魔獸世界這類大型網(wǎng)絡(luò)游戲的盛行,K. Park 等人針對(duì)該類游戲的外掛進(jìn)行研究,并把此類游戲的外掛進(jìn)行了總結(jié)分類,分別為針對(duì)服務(wù)器攻擊的外掛、針對(duì)客戶端數(shù)據(jù)攻擊的外掛、針對(duì)網(wǎng)絡(luò)流量攻擊的外掛以及針對(duì)正常玩家攻擊的外掛,并把游戲外掛的檢測(cè)方法分為三類,即玩家客戶端檢測(cè),游戲網(wǎng)絡(luò)通信檢測(cè)和游戲遠(yuǎn)程服務(wù)端檢測(cè),如下表:
分類 方法 實(shí)例
用戶端 開發(fā)商的反作弊系統(tǒng) 騰訊的TP,Valve的VAC
用戶端 第三方反外掛開發(fā)商的反作弊系統(tǒng) 絕地求生采用的BettleEye 系統(tǒng)
用戶端 用戶舉報(bào)以及人工巡檢系統(tǒng) 幾乎所有的游戲都會(huì)做這樣的系統(tǒng)
網(wǎng)絡(luò)通信 監(jiān)控流量,往返的時(shí)間值的比較 現(xiàn)在比較普遍的手段
網(wǎng)絡(luò)通信 封包數(shù)據(jù)加密 現(xiàn)在比較普遍的手段
服務(wù)器 分析玩家的游戲日志是否異常 夢(mèng)幻西游,地下城
服務(wù)器 不定時(shí)的圖片驗(yàn)證或者數(shù)字問答驗(yàn)證 問道
國(guó)內(nèi)外當(dāng)前的狀況
國(guó)外
Ronald L.Rivest 等人研究了玩家客戶端向服務(wù)器發(fā)送數(shù)據(jù)封包命令的情況,監(jiān)控了不同時(shí)間段的不同的流量總量的情況下,在使用外掛時(shí)與正常游戲時(shí)的流量變化的不同之處,以此來作為識(shí)別外掛的手段。David A.solomon 等人指出,脫機(jī)類外掛及機(jī)器人類的外掛在數(shù)據(jù)流量上會(huì)體現(xiàn)出一定的規(guī)律性,并會(huì)表現(xiàn)出數(shù)據(jù)包發(fā)送具有固定的時(shí)間間隔和頻率極快的特點(diǎn)。William R.Cheswick 等人根據(jù)行為分析的方法,利用機(jī)器人操作與玩家操作的不同之處,分析兩者之間的差異特征,研究正常玩家的行為日志和機(jī)器人的行為日志,通過分析對(duì)比找出外掛使用者。Matt Pietrek 等人使用玩家角色的路徑分析方法,玩家正常游戲時(shí)的移動(dòng)路徑是變化的,隨機(jī)的,走相同的路有不同的路徑,而機(jī)器人外掛操作的角色經(jīng)過相同地點(diǎn)時(shí)的路徑點(diǎn)大部分是重復(fù)的,通過對(duì)比玩家角色的路徑,會(huì)發(fā)現(xiàn)使用外掛會(huì)反復(fù)出現(xiàn)相同的路徑坐標(biāo),所以可以以此數(shù)據(jù)來檢測(cè)玩家是否使用外掛。用戶端的反外掛系統(tǒng),會(huì)為玩家?guī)砗芏嗖槐悖?jīng)常會(huì)與系統(tǒng)平臺(tái)和其他相關(guān)軟件發(fā)生沖突。例如,在用戶端加上外掛監(jiān)測(cè)機(jī)制,但是程序本身對(duì)游戲沒有任何益處,而且加重玩家電腦的負(fù)擔(dān),并且即使檢測(cè)到外掛,也只能檢測(cè)當(dāng)前的用戶,只有一個(gè)違法行為,且不法分子完全可以針對(duì)該程序設(shè)計(jì)逃避檢測(cè)方法。而對(duì)于網(wǎng)絡(luò)通信的檢測(cè)方法早已過時(shí),現(xiàn)在所有的游戲都有網(wǎng)絡(luò)通信的時(shí)間驗(yàn)證和流量監(jiān)控,時(shí)間加速類外掛也不存在了,不法分子的外掛制作更加高級(jí)和隱蔽,網(wǎng)絡(luò)通信的檢測(cè)辦法已經(jīng)對(duì)當(dāng)前的外掛無能為力。為了克服客戶端和網(wǎng)絡(luò)端檢測(cè)的缺點(diǎn),游戲開發(fā)商們和第三方反外掛機(jī)構(gòu)都將重點(diǎn)檢測(cè)機(jī)制放在了服務(wù)器端,尤其通過對(duì)玩家的行為日志分析檢測(cè),判斷該游戲人物是否存在異常。
如今國(guó)外存在防御外掛的方法有很多,但是效果比較好且比較流行的有:角色行為分析,角色移動(dòng)路徑分析,數(shù)據(jù)包驗(yàn)證,彈出事件檢測(cè)。在玩家游戲時(shí),彈出圖片類驗(yàn)證碼測(cè)試,玩家可以很容易解決,但是如果存在脫機(jī)外掛代替玩家自己操作人物,那么外掛就很難識(shí)別,游戲系統(tǒng)就可以判斷出該角色是否是脫機(jī)掛玩家,但是由于如今人臉識(shí)別和圖像處理技術(shù)的提高,圖片中的關(guān)鍵字和數(shù)字已經(jīng)很容易檢測(cè)出來,這種反外掛方法作用也越來越小。
國(guó)內(nèi)
國(guó)內(nèi)的外掛其歷史可以追溯到單機(jī)游戲時(shí)代,那時(shí)它的名字是游戲修改器,因?yàn)槠淇梢栽谟螒蛑凶粉欐i定游戲角色的各項(xiàng)數(shù)據(jù)參數(shù),通過修改各項(xiàng)參數(shù)來降低游戲難度,使玩家更容易在游戲中得到樂趣。隨著國(guó)內(nèi)經(jīng)濟(jì)發(fā)展以及互聯(lián)網(wǎng)普及度越來越高,網(wǎng)絡(luò)游戲也應(yīng)運(yùn)而生,游戲外掛功能也變得越來越強(qiáng)大,在原有的基礎(chǔ)上增加了很多新的功能,騰訊的網(wǎng)絡(luò)游戲《地下城與勇士》,外掛種類和功能多種多樣,例如:秒怪、瞬移、順圖、無敵、透明、加三維、加移速、自動(dòng)補(bǔ)血等,利用這些功能可以在游戲中輕松打怪練級(jí)爆裝備,讓外掛玩家輕松升級(jí)做任務(wù)。為了阻止網(wǎng)絡(luò)游戲外掛的蔓延和維護(hù)自己應(yīng)得的權(quán)益,國(guó)內(nèi)網(wǎng)絡(luò)游戲開發(fā)商制定了很多的反外掛系統(tǒng)和措施來預(yù)防和檢測(cè)網(wǎng)絡(luò)游戲非法外掛,但效果都不太好,比如地下城與勇士,游戲從發(fā)行到現(xiàn)在已經(jīng) 10 年之久,但是外掛一直存活至今,甚至公然在游戲中喊話賣外掛。隨著技術(shù)的創(chuàng)新和發(fā)展,國(guó)內(nèi)的反外掛系統(tǒng)也有了自己的成果,下文主要對(duì)國(guó)內(nèi)的四類反外掛系統(tǒng)做了說明。
第一種方法是驗(yàn)證分析方法。驗(yàn)證分析方法檢測(cè)的是脫機(jī)外掛,脫機(jī)類外掛危害最大,破壞游戲平衡,造成客戶端與服務(wù)器通訊擁堵,引發(fā)游戲中的物價(jià)的上漲和暴跌,最終導(dǎo)致游戲的金錢系統(tǒng)崩潰,流失大量玩家。驗(yàn)證分析法的檢測(cè)原理是:在游戲人物休息時(shí),彈出不確定的驗(yàn)證碼,讓玩家手動(dòng)輸入答案,來區(qū)分機(jī)器人外掛和玩家。驗(yàn)證分析方法有兩種類型的驗(yàn)證分別為:驗(yàn)證碼識(shí)別技術(shù)和圖像驗(yàn)證技術(shù)。驗(yàn)證碼識(shí)別技術(shù)(Gimpy)是服務(wù)器端隨機(jī)從數(shù)據(jù)庫中抽取一定比例的數(shù)字和一定比例的漢字,發(fā)送到玩家的客戶端,讓玩家進(jìn)行識(shí)別驗(yàn)證,判斷操作該游戲角色的是機(jī)器人托管還是玩家本人[12]。圖像驗(yàn)證(Pix)的方法和它只有輕微的差別,圖像驗(yàn)證技術(shù)的數(shù)據(jù)庫是各種各樣的圖形,讓玩家選擇不同的符合要求的圖形來驗(yàn)證其身份,這兩種方法都是比較常規(guī)的方法,利用機(jī)器人外掛的判斷邏輯漏洞來進(jìn)行識(shí)別和驗(yàn)證其真實(shí)身份。由于圖像識(shí)別技術(shù)的發(fā)展和提高,這兩種方法都被不法分子利用圖像識(shí)別技術(shù)自動(dòng)識(shí)別填寫內(nèi)容,效果越來越差,國(guó)內(nèi)的游戲開發(fā)商又發(fā)展新的驗(yàn)證辦法如:圖像或者文字歸類驗(yàn)證方法和玩家聲音識(shí)別驗(yàn)證方法。這兩種方法能有效的識(shí)別出機(jī)器人,但是其占用資源大,并且不夠直接,影響玩家游戲體驗(yàn),降低游戲的可玩性。并且該檢測(cè)方法具有最大的弊端是檢測(cè)時(shí)間是比較隨機(jī)和不確定的,極有可能在玩家操作角色的關(guān)鍵時(shí)刻彈出驗(yàn)證信息,導(dǎo)致操作失敗或者對(duì)局失利,及其影響玩家體驗(yàn),所以在如今的網(wǎng)絡(luò)游戲中這種驗(yàn)證分析技術(shù)使用的越來越少,逐漸被淘汰,退出了歷史舞臺(tái),但是這種技術(shù)在其剛開發(fā)的初期,對(duì)于外掛的檢測(cè),尤其是脫機(jī)類機(jī)器人外掛提供了很大的助力。
第二種方法是對(duì)服務(wù)器和客戶端的通信數(shù)據(jù)進(jìn)行加密的方法 。它的原理是通過對(duì)傳送數(shù)據(jù)的加密,讓服務(wù)器與客戶端的通信數(shù)據(jù)進(jìn)行交互及校驗(yàn)時(shí),其通信數(shù)據(jù)不被泄露,如:地下城與勇士游戲,玩家在通關(guān)本局時(shí),通關(guān)評(píng)分是 S,外掛找到其數(shù)據(jù),修改為 SSS 評(píng)分,然后客戶端把修改后的數(shù)據(jù)發(fā)送給服務(wù)器端以達(dá)到其增加游戲評(píng)分的目的,但是如果在游戲設(shè)計(jì)的時(shí)候增加一個(gè)加解密過程,先對(duì)需要通信的數(shù)據(jù)進(jìn)行加密,然后發(fā)送給用戶端,那么該數(shù)據(jù)外掛就無能為力。雖然對(duì)通信數(shù)據(jù)添加加解密這樣的過程能夠有效的阻止外掛對(duì)其的修改,但是整體增加了游戲服務(wù)器的負(fù)擔(dān),影響游戲的整體流暢度和效率,而且其加密秘鑰也容易泄露,因?yàn)槠浣饷茉诳蛻舳诉M(jìn)行,而客戶端已經(jīng)下載到玩家電腦上,所以外掛制作者們費(fèi)一些功夫就能找到該解密秘鑰,所以該方法存在很大的安全隱患。
第三種方法是阻斷網(wǎng)絡(luò)游戲外掛程序的方法。該方法的原理是在游戲客戶端啟動(dòng)執(zhí)行的時(shí)候,附加外掛檢測(cè)手段,查看電腦中是否有修改本地內(nèi)存的操作或者權(quán)限的軟件在運(yùn)行中,若檢測(cè)到立馬終止其操作,如果不能阻止那么立馬阻止游戲客戶端的啟動(dòng),防止客戶端被調(diào)試或修改。但是該方法同樣被外掛制作玩家破解,外掛制作者完全可以在客戶端截獲從服務(wù)器端發(fā)來的監(jiān)測(cè)數(shù)據(jù)packet,然后偽造檢測(cè)數(shù)據(jù),外掛已經(jīng)修改了一個(gè)地址,但是改地址會(huì)被檢測(cè),那么根據(jù)被檢測(cè)的地址偽造數(shù)據(jù),返回被修改前的數(shù)據(jù),這樣無論外掛修改了哪個(gè)地址都不會(huì)被檢測(cè)到。
第四種方法是一種防止網(wǎng)絡(luò)游戲外掛軟件的集成辦法。該辦法比前面三種更為強(qiáng)大和全面,它不僅能保護(hù)游戲數(shù)據(jù)的安全,對(duì)數(shù)據(jù)進(jìn)行加密更能對(duì)外掛進(jìn)行有效的檢測(cè)。該方法主要是從三個(gè)方面進(jìn)行防護(hù):
提供數(shù)據(jù)游戲封包數(shù)據(jù)加密方法。
提供游戲外掛的檢測(cè)系統(tǒng)。
具有防御外掛的裝置。
但是這種方法是通過從玩家客戶端的數(shù)據(jù)和服務(wù)器的數(shù)據(jù)進(jìn)行分析對(duì)比,來判斷是否存在非法行為,外掛制作者利用封包分析工具 WPE 發(fā)送相同的數(shù)據(jù),選擇最好的結(jié)果的數(shù)據(jù),比如評(píng)分最高的數(shù)據(jù),并不修改數(shù)據(jù)本身的內(nèi)容,使得該外掛檢測(cè)系統(tǒng)識(shí)別不出來。
當(dāng)前的反外掛技術(shù)都存在或多或少的漏洞,游戲一旦發(fā)布就會(huì)面臨著世界上所有黑客的攻擊和分析,找出其漏洞來獲取非法利益,所以反外掛道路任重而道遠(yuǎn)。
外掛的研究
1.模擬類
模擬類外掛是代替玩家操作鼠標(biāo)鍵盤,模擬玩家操作類的程序,它能幫助玩家用簡(jiǎn)單的操作實(shí)現(xiàn)讓游戲角色進(jìn)行復(fù)雜的動(dòng)作,簡(jiǎn)化甚至替代玩家操作,幫助玩家不用點(diǎn)擊鼠標(biāo)或者敲擊鍵盤就可以進(jìn)行游戲操作的自動(dòng)功能。例如:簡(jiǎn)單的射擊操作、簡(jiǎn)單的移動(dòng)操作、撿東西等,這類外掛不需要分析游戲的數(shù)據(jù)和加密算法,只需要按照一定規(guī)律或順序設(shè)計(jì)一組按鍵操作或者按鍵的觸發(fā)條件就可以[23]。不過隨著時(shí)間的推移和技術(shù)的發(fā)展,這類外掛也形成一種體系,比如非常出名的“按鍵精靈”,他可以配合其他類的外掛進(jìn)行功能組合,達(dá)到自動(dòng)拾取,自動(dòng)放技能的作用,在已經(jīng)分析出人物數(shù)據(jù)、掉落物品數(shù)據(jù)的情況下,設(shè)定坐標(biāo)相同時(shí)觸發(fā)拾取按鍵功能,就可以達(dá)到自動(dòng)拾取的功能。這種外掛沒有修改游戲的數(shù)據(jù)和物品,只是作為輔助方便的了游戲玩家和節(jié)省了很多無聊的操作和時(shí)間,一般對(duì)游戲危害比較輕。
模擬類外掛實(shí)現(xiàn)方法較簡(jiǎn)單,用幾個(gè) API 函數(shù)就可以實(shí)現(xiàn)模擬鍵盤和鼠標(biāo)的操作,通過 API 函數(shù)來代替鍵鼠操作,把鍵鼠操作指令發(fā)送給游戲程序,讓玩家的游戲角色進(jìn)行移動(dòng)、攻擊、撿取物品等行為操作。
2.內(nèi)存修改類外掛
內(nèi)存修改類外掛可以分為以下三種:
第一種方法是利用 virtual X driver(虛擬設(shè)備驅(qū)動(dòng)程序)直接查找游戲內(nèi)存分配地址,這種方法需外掛開發(fā)人員有良好的編程基礎(chǔ)和系統(tǒng)的底層驅(qū)動(dòng)知識(shí),是技術(shù)較難的一種方法,門檻較高。
第二種方法就是用 ToolHelp API 函數(shù),該函數(shù)是用來枚舉進(jìn)程和模塊,獲取進(jìn)程和模塊的 ID 與信息。黑客利用 ReadProcess Memory 函數(shù)從網(wǎng)絡(luò)游戲的進(jìn)程中讀取到游戲的內(nèi)存數(shù)據(jù),但是該方法沒有修改內(nèi)存的函數(shù),不能往內(nèi)存里寫數(shù)據(jù),所以這種方法需要其他方法的配合,具有一定的弊端。
第三種方法是利用游戲進(jìn)程的對(duì)應(yīng)函數(shù),這種方法比前兩種要方便和簡(jiǎn)單很多,游戲進(jìn)程的對(duì)應(yīng)函數(shù)很容易就能得到,例如利用:ReadProcessMemory 和 WriteProcess-Memory 兩個(gè)函數(shù)對(duì)游戲進(jìn)程進(jìn)行讀取和寫入,這種方法是當(dāng)下最流行最受歡迎的方法,該方法能修改市面上大多數(shù)的游戲內(nèi)存。
Windows 系統(tǒng)會(huì)預(yù)留一些 API 函數(shù),這樣會(huì)大大降低開發(fā)人員的開發(fā)程序的難度和復(fù)雜度,這些函數(shù)原本是用來調(diào)試程序,但是外掛制作人員利用這些 API 函數(shù)修改游戲內(nèi)存進(jìn)行非法外掛的制作,其中典型的兩個(gè) API 函數(shù)分別為 ReadProcessMemory 和WriteProcessMemory,一個(gè)是對(duì)游戲程序內(nèi)存進(jìn)行讀取,另一個(gè)是對(duì)游戲內(nèi)存程序進(jìn)行寫入操作。但在使用這兩個(gè)函數(shù)之前,想要對(duì)網(wǎng)絡(luò)游戲內(nèi)存進(jìn)行讀取和修改,首先要查找到游戲中相關(guān)屬性的內(nèi)存地址,才能進(jìn)行修改,所以相對(duì)內(nèi)存修改而言游戲中人物屬性的相關(guān)內(nèi)存查詢更加困難和繁瑣,需要找到合適的算法和公式進(jìn)行分析。
3.封包類外掛
封包類外掛是難度較高的一種外掛技術(shù),涉及多個(gè)技術(shù)問題,網(wǎng)絡(luò)游戲的服務(wù)器端和客戶端通信是利用 socket,服務(wù)器端申請(qǐng)一個(gè)socket 監(jiān)聽消息,并綁定到一個(gè)對(duì)應(yīng)的 IP 地址和端口上,等待游戲客戶端的連接,外掛制作者利用封包截取工具截取通信數(shù)據(jù)包,經(jīng)過多次截取封包,分析數(shù)據(jù),得到封包數(shù)據(jù)對(duì)應(yīng)的人物操作或?qū)傩?,若封包加密則分析其加密算法,網(wǎng)絡(luò)游戲的前期由于其服務(wù)器功能的限制,一般封包都不加密或者采用異或加密很好破解,修改對(duì)應(yīng)的數(shù)據(jù),再利用封包截獲工具(如winpert)轉(zhuǎn)發(fā)給服務(wù)器,通過篡改通信數(shù)據(jù)來實(shí)現(xiàn)作弊。
由于互聯(lián)網(wǎng)通訊技術(shù)的發(fā)展和計(jì)算機(jī)硬件功能的更新與加強(qiáng),封包數(shù)據(jù)只能用異或加密的限制已經(jīng)不存在,現(xiàn)在的游戲客戶端在和遠(yuǎn)程服務(wù)器通信時(shí)一般都利用 RC4 和 RSA 進(jìn)行加密,封包外掛技術(shù)即使截獲了數(shù)據(jù),也破解不了被加密的數(shù)據(jù)。所以對(duì)網(wǎng)絡(luò)游戲的危害已經(jīng)變得越來越小。
3.脫機(jī)類外掛
脫機(jī)類外掛是一種綜合類外掛,是前三類外掛技術(shù)的總和,也是難度最大的一種外掛,一般在一個(gè)游戲發(fā)布 3 到 5 年之后,才會(huì)在市面上流傳的外掛,是制作周期最長(zhǎng)所需技術(shù)最為復(fù)雜的外掛。每個(gè)游戲都有自己特有的通信方法和原理,外掛開發(fā)者們需要完全分析出本地端與遠(yuǎn)處服務(wù)端的通信原理,達(dá)到不使用客戶端進(jìn)入游戲的目的,這類外掛是為工作室而開發(fā),一臺(tái)機(jī)子可以開幾十個(gè)號(hào)同時(shí)掛機(jī)練級(jí)和刷金幣,獲取非法利益。
開發(fā)流程如下:
破除游戲反調(diào)試。
逆向分析出游戲加解密算法。
逆向分析出地圖等資源信息
分析出登陸封包,實(shí)現(xiàn)脫機(jī)登陸,獲取角色屬性、裝備、物品、技能相關(guān)信息。
具體功能封包分析。
整合尋路算法,實(shí)現(xiàn)基本掛機(jī)。
根據(jù)工作室需求,完善功能。
一個(gè)游戲如果被外掛制作者們開發(fā)出脫機(jī)外掛,對(duì)該游戲破壞是災(zāi)難性的,脫機(jī)外掛的出現(xiàn)必然會(huì)導(dǎo)致游戲中物價(jià)的起伏,甚至金錢系統(tǒng)的崩潰,損害正常玩家的利益,造成玩家大量流失,最后導(dǎo)致游戲運(yùn)營(yíng)時(shí)間縮短提前退出市場(chǎng),嚴(yán)重?fù)p害游戲開發(fā)商和玩家的利益,擾亂我國(guó)游戲行業(yè)的正常發(fā)展,所以脫機(jī)類外掛一直是游戲開發(fā)商和國(guó)家重點(diǎn)打擊的對(duì)象。
網(wǎng)絡(luò)游戲封包加密技術(shù)
異或加密
網(wǎng)游游戲最開始運(yùn)用的加密算法是異或加密,顧名思義該加密算法就是經(jīng)過簡(jiǎn)單的異或的位運(yùn)算進(jìn)行加密,跟高中數(shù)學(xué)所學(xué)的映射關(guān)系相類似,由于其運(yùn)算簡(jiǎn)單,加密速度快,而且在網(wǎng)絡(luò)游戲初期受服務(wù)器和電腦硬件配置的限制,網(wǎng)絡(luò)游戲加密只能運(yùn)用此類加密算法,但該加密算法很容易被破解,若游戲的通信機(jī)密算法被破解,只能等待游戲的下一次更新進(jìn)行修改和維護(hù)。這種加密算法存在很大的弊端,對(duì)數(shù)據(jù)的保護(hù)強(qiáng)度很差,早期的游戲開發(fā)商只能增加游戲的維護(hù)頻率和周期,進(jìn)行不定時(shí)的更換映射規(guī)則,預(yù)防外掛的破解。
異或加密的數(shù)據(jù)很容易破解,例如:網(wǎng)絡(luò)游戲中所使用的地址一般是一個(gè) 8 位的 16進(jìn)制數(shù),通信所發(fā)送的數(shù)據(jù)也是 16 進(jìn)制,下面一段數(shù)據(jù)是利用 WPE 工具在玩家操作游戲界面進(jìn)行登錄時(shí)被截取的一段數(shù)據(jù),很明顯該數(shù)據(jù)為登錄時(shí)玩家輸入的登錄賬號(hào)和密碼。
Send: 0000 01 00 00 00 68 75 61 6e 67 6a 75 6e 31 31 38 00
00 02 00 6a 75 6e 6a 75 6e 31 32 33 33 34 00 00
由 WPE 截獲的數(shù)據(jù)看出,用戶名經(jīng)過異或加密是: 68 75 61 6e 67 6a 75 6e 30 30 37;
登錄密碼經(jīng)過加密是: 6a 75 6e 6a 75 6e 31 32 33 33 34。用輔助軟件和規(guī)律分析,很快就
可以得出解密后的明文。然后利用 16 進(jìn)制換算為 10 進(jìn)制,并從 ASCII 碼表中找到對(duì)應(yīng)
的 ASCII 碼值,就可以計(jì)算出原文的數(shù)據(jù):用戶名: huangjun118,密碼:junjun12345。
RC4 加密
算法見我的另一篇文章:
link.
RSA 加密
link.
網(wǎng)絡(luò)游戲外掛檢測(cè)技術(shù)
鼠標(biāo)鍵盤模擬檢測(cè)技術(shù)
鍵盤鼠標(biāo)模擬外掛是通過軟件模擬人工操作鼠標(biāo)和鍵盤進(jìn)行替代玩家操作的外掛,比較流行的外掛如:按鍵精靈、鼠標(biāo)連點(diǎn)器、簡(jiǎn)單游等外掛軟件。
網(wǎng)絡(luò)游戲開發(fā)商檢測(cè)該類外掛總體用兩種方法,一種是客戶端檢測(cè),一種是用戶行為分析檢測(cè)??蛻舳塑浖z測(cè)主要有檢測(cè)玩家電腦上運(yùn)行程序的進(jìn)程、窗口名、界面名字、機(jī)器碼和軟件特征碼等。舉個(gè)簡(jiǎn)單的例子,一些外掛軟件被黑客制作出來進(jìn)行出售,如果銷量比較高,用該外掛的次數(shù)比較多,那么該軟件的一些特征碼就會(huì)被加入黑名單,只要在運(yùn)行游戲時(shí),打開此類外掛就會(huì)提示非法,但是如果把外掛代碼放入其他的編程語言進(jìn)行編輯再打開卻沒有提示非法外掛,這里也是游戲商的一個(gè)痛點(diǎn)之一,如果游戲因?yàn)榇a編輯工具就提示非法,這就違背了國(guó)家制定的版權(quán)規(guī)定,所以此類方法只能遏制外掛的泛濫而不能完全禁絕外掛。所以目前比較流行的方法也是大多是游戲開發(fā)商使用的方法:用戶行為分析檢測(cè),主要有以下幾點(diǎn):
分析鼠標(biāo)點(diǎn)擊頻率和移動(dòng)頻率,如果存在長(zhǎng)時(shí)間的點(diǎn)擊頻率相同和類似,或者點(diǎn)擊頻率過快,都會(huì)被加入黑名單。
判斷游戲角色的差異值,一般模擬類軟件的角色行為和玩家的行為差距很大,這種差距安全人員一眼都可以看出來,但是游戲開發(fā)商不可能有那么多的人工對(duì)所有玩家進(jìn)行監(jiān)測(cè),所以游戲開發(fā)商會(huì)針對(duì)游戲角色的行為設(shè)置一個(gè)范圍值,即臨界點(diǎn),如果過了該臨界值就加入黑名單或者直接彈窗非法,強(qiáng)制下線該賬號(hào)。
監(jiān)測(cè)結(jié)果數(shù)據(jù),游戲公司對(duì)游戲中關(guān)鍵的數(shù)據(jù)進(jìn)行嚴(yán)格的監(jiān)控,利用時(shí)間的大間隔對(duì)關(guān)鍵數(shù)據(jù)的結(jié)果進(jìn)行上傳,對(duì)上傳到服務(wù)器的數(shù)據(jù)進(jìn)行臨界值檢測(cè),若有異常數(shù)據(jù),則判斷為非法使用模擬類外掛。由于此類外掛對(duì)游戲的公平性有影響,但是危害性比較低,所以游戲開發(fā)商一旦檢測(cè)到此類外掛,只會(huì)對(duì)該玩家做下線處理并彈窗警告,并不會(huì)做封號(hào)處理。
游戲數(shù)據(jù)修改檢測(cè)技術(shù)
在網(wǎng)絡(luò)游戲反外掛的歷史中,曾有一個(gè)很流行的反外掛系統(tǒng) N-Protect,該系統(tǒng)是當(dāng)時(shí)網(wǎng)絡(luò)游戲普遍采用的反外掛系統(tǒng),該系統(tǒng)可以在線進(jìn)行升級(jí),并同時(shí)在玩家運(yùn)行游戲時(shí)檢測(cè)游戲運(yùn)行環(huán)境,是否有外掛運(yùn)行,客戶端是否完整,是否有外掛存在修改客戶端內(nèi)存數(shù)據(jù)。但是這用外掛檢測(cè)辦法本身就存在缺陷,因?yàn)榉赐鈷煜到y(tǒng) N-Protect 本身就存在于游戲的客戶端的機(jī)子上,該電腦是玩家所有,如何能夠保證該外掛程序不會(huì)被修改和欺騙,客戶端可以被修改,那么該反外掛程序一樣可以被修改,所以該反外掛系統(tǒng)投入運(yùn)營(yíng)了一段時(shí)間后,被國(guó)內(nèi)的黑客攻破,最終該系統(tǒng)以失敗而告終。想要檢測(cè)游戲外掛存在以下難點(diǎn):
無法完全防止游戲客戶端被修改,游戲客戶端一旦到了玩家和黑客手上,根本無法阻止黑客的修改。即使有法律的制約,在當(dāng)前的社會(huì)情況下也無法有效的監(jiān)督其個(gè)人行為。
對(duì)游戲客戶端的檢查容易被欺騙,當(dāng)檢測(cè)系統(tǒng)檢查客戶端的完整性的時(shí)候,外掛制作者完全可以偽造一個(gè)安全的進(jìn)程,把合理的代碼放進(jìn)去,讓檢測(cè)系統(tǒng)檢測(cè)假的數(shù)據(jù),這樣無論客戶端被怎么樣修改檢測(cè)系統(tǒng)都不會(huì)發(fā)現(xiàn)。
掛檢測(cè)系統(tǒng)無法把檢測(cè)到的結(jié)果正確的傳遞給服務(wù)器,外掛制作者找到其檢測(cè)結(jié)果的數(shù)據(jù),即使該檢測(cè)系統(tǒng)已經(jīng)檢測(cè)到非法軟件,作弊者也可以篡改其檢查結(jié)果,變?yōu)闄z測(cè)合法的數(shù)據(jù)分支,不管檢測(cè)系統(tǒng)檢測(cè)出什么外掛,都無法向服務(wù)器發(fā)送正確的檢測(cè)結(jié)果。
因?yàn)橛螒蚬緹o法通過客戶端的加殼和檢測(cè)的方法有效的阻止作弊者修改其客戶端,所以開發(fā)商又考慮從服務(wù)器端檢測(cè)玩家的使用外掛修改本地?cái)?shù)據(jù)的行為,具體方法如下:
檢測(cè)玩家的 IP 地址,是否在同一個(gè) IP 地址下存在很多游戲賬號(hào)登錄的情況,這里檢測(cè)并不是一定要一個(gè) IP 只有一個(gè)游戲賬號(hào),而是針對(duì)用軟件模擬玩家操作,在同一個(gè)電腦中登錄十幾個(gè)賬號(hào)的工作室,如果被檢測(cè)到 IP 上有很多號(hào),那么就會(huì)被服務(wù)器加入黑名單,甚至被全部封號(hào)。
限制客戶端多開的數(shù)量,比如地下城與勇士該游戲在剛發(fā)行的時(shí)候只允許玩家在同一臺(tái)電腦只能開一個(gè)客戶端,隨著游戲的運(yùn)營(yíng)和玩家的減少,開發(fā)商現(xiàn)在允許玩家進(jìn)行雙開設(shè)置,方便大號(hào)帶小號(hào)。
檢測(cè) MAC 機(jī)器碼,這種檢測(cè)機(jī)制只有很小一部分開發(fā)商使用,因?yàn)橐粋€(gè)電腦有一個(gè)固定的 MAC 碼,不能被軟件改變,所有如果玩家在一臺(tái)電腦上長(zhǎng)期使用外掛或者造成的影響非常惡劣,那么游戲就會(huì)把該臺(tái)機(jī)器的 MAC 碼加入黑名單,禁止該電腦登錄游戲。
游戲內(nèi)置舉報(bào)系統(tǒng),現(xiàn)如今幾乎所有的網(wǎng)絡(luò)游戲都有該功能,尤其是在競(jìng)技類游戲中,如果正常玩家被作弊玩家殺死,那么玩家肯定會(huì)舉報(bào)該外掛,所以此類方法非常簡(jiǎn)單且效果強(qiáng)大。
根據(jù)玩家最近玩游戲的數(shù)據(jù),延時(shí)分析游戲數(shù)據(jù)是否異常,這種檢測(cè)機(jī)制是當(dāng)下最流行的檢測(cè)機(jī)制,在玩家使用外掛修改了人物的屬性之后,利用變態(tài)的屬性刷怪打裝備,很安全所有難度都可以隨便刷,并且也沒有被檢測(cè)到,但是等兩天再登錄的時(shí)候發(fā)現(xiàn)賬號(hào)非法或者賬號(hào)被封,這種情況就是服務(wù)器定時(shí)對(duì)玩家游戲數(shù)據(jù)進(jìn)行分析,而且這種檢測(cè)機(jī)制準(zhǔn)確率非常高,只要發(fā)現(xiàn)數(shù)據(jù)異常很可能直接做封號(hào)處理。
外掛實(shí)現(xiàn)與反外掛舉例
射擊類外掛
射擊類游戲(FPS)如:穿越火線、逆戰(zhàn)、守望先鋒、絕地求生、以及最近新出的apex 英雄,其特點(diǎn)是以第一人稱視角或者第三人稱視角進(jìn)行操作虛擬人物進(jìn)行射擊交戰(zhàn),而游戲屏幕中間會(huì)有一個(gè)準(zhǔn)星,這是槍械武器的射擊位置,通過準(zhǔn)星瞄準(zhǔn)敵人進(jìn)行射擊交火,以達(dá)到擊殺效果,若射擊瞄準(zhǔn)的是頭部危險(xiǎn)部位那么會(huì)發(fā)生一擊致命,即爆頭效果,達(dá)到快速擊殺。但是頭部相對(duì)于人物的整體是很小的一部分,很難被射擊,且人物會(huì)一直移動(dòng)再加上武器的后坐力,所以要打到頭部危險(xiǎn)部位幾率非常小,那么外掛自動(dòng)瞄準(zhǔn)就是根據(jù)游戲漏洞進(jìn)行編寫,達(dá)到自動(dòng)瞄準(zhǔn),形成一擊必殺、百步穿楊效果。
游戲調(diào)試工具:CE和OllyDbg。
外掛制作者通過游戲調(diào)試工具,可以獲取到游戲的基地址以及某個(gè)變量(如血量,子彈數(shù),自己的位置,敵人的位置,朝向),通過數(shù)學(xué)運(yùn)算,計(jì)算出自己與敵人之間的朝向與當(dāng)前朝向的差異,一種方法可以直接修改本地朝向?yàn)樽约褐苯映驍橙?,即?zhǔn)信瞄準(zhǔn)敵人,另一種可以通過模擬鼠標(biāo)操作,通過計(jì)算給一個(gè)輸入,讓自己的朝向鎖定敵人。
除了內(nèi)存掛現(xiàn)在已經(jīng)可以完全可以通過鍵鼠模擬去瞄準(zhǔn)敵人,如計(jì)算鼠標(biāo)的靈敏度偏移,在渲染時(shí)拿到渲染的數(shù)據(jù),一般人物會(huì)有標(biāo)識(shí)可以找到,然后可以取到渲染的位置(如果在游戲上層加一層改變一下渲染顏色,就能做出透視掛),通過計(jì)算鼠標(biāo)應(yīng)該有的偏移,使用系統(tǒng)自帶的系統(tǒng)接口可以直接在不移動(dòng)鼠標(biāo)情況下,操作游戲任務(wù)瞄準(zhǔn)敵人,這也是鎖頭掛的原理。
后坐力的實(shí)現(xiàn),有的游戲后坐力是純客戶端實(shí)現(xiàn)的,可以通過修改后坐力的系數(shù),或者直接一直設(shè)置朝向達(dá)到無后座力,另一種就是使用輸入反向輸入后坐力的偏移,這樣也能達(dá)到無后坐力。
飛天遁地掛的話主要是服務(wù)器沒信任客戶端,沒有對(duì)客戶端的位置進(jìn)行校驗(yàn),客戶端通過修改1P的位置,然后告訴服務(wù)器,服務(wù)器因?yàn)闆]有校驗(yàn)合法性,直接同步給了其他3P導(dǎo)致。
自動(dòng)開槍掛的原理跟上訴類似:也是在外面的準(zhǔn)信即自己的準(zhǔn)信對(duì)準(zhǔn)敵人的時(shí)候,自動(dòng)觸發(fā)鼠標(biāo)點(diǎn)擊事件,達(dá)到自動(dòng)開槍的目的。
游戲?qū)崿F(xiàn)要怎么預(yù)防呢?
主要還是基于檢測(cè)跟校驗(yàn):
監(jiān)聽武器準(zhǔn)星移動(dòng)頻率玩家在操作游戲人物的時(shí)候,鼠標(biāo)控制武器準(zhǔn)星的移動(dòng),玩家通過移動(dòng)鼠標(biāo)讓武器準(zhǔn)星瞄準(zhǔn)敵人位置,進(jìn)行射擊。而自動(dòng)瞄準(zhǔn)外掛會(huì)讓武器準(zhǔn)星自動(dòng)瞄準(zhǔn),不需要玩家移動(dòng)鼠標(biāo)瞄準(zhǔn),自瞄外掛代替了玩家操作鼠標(biāo),但是在自瞄外掛的控制下,武器準(zhǔn)星移動(dòng)的頻率和準(zhǔn)確率遠(yuǎn)遠(yuǎn)超過了玩家的操作極限和合理性。本文可以利用自動(dòng)瞄準(zhǔn)外掛這個(gè)特點(diǎn)來監(jiān)視非法使用外掛的玩家,阻止玩家作弊。方法如下:
設(shè)定玩家移動(dòng)武器準(zhǔn)星最大頻率值預(yù)先測(cè)定玩家移動(dòng)鼠標(biāo)的最大頻率值,然后作為反外掛程序的基本標(biāo)準(zhǔn)。
判定外掛規(guī)則
判定方法具體為,用計(jì)數(shù)器B來記錄頻數(shù),如果頻數(shù)超過設(shè)定的標(biāo)準(zhǔn),則另一個(gè)計(jì)數(shù)器A加1,如果第二次計(jì)數(shù)器B沒有超過頻數(shù)標(biāo)準(zhǔn),則計(jì)數(shù)器A清零,避免由于人為的低概率事件的發(fā)生,如果連續(xù)3次超過頻數(shù)標(biāo)準(zhǔn),即計(jì)數(shù)器A的值超過3,則判定出現(xiàn)外掛程序,中止游戲。
監(jiān)視玩家的命中概率
這種方式比較占內(nèi)存,但是這種方法發(fā)現(xiàn)外掛的效率要比前一種方式高。下面介紹方法如下:
設(shè)定一個(gè)玩家命中率的最大值反復(fù)試驗(yàn),測(cè)定玩家命中的最大概率,適當(dāng)增加這個(gè)概率值,做為反外掛的一個(gè)基本參考標(biāo)準(zhǔn),設(shè)該標(biāo)準(zhǔn)值為p。
判定規(guī)則
首先建立兩個(gè)系統(tǒng)計(jì)數(shù)器n和m,用來監(jiān)視射擊類游戲窗口,當(dāng)游戲中玩家對(duì)戰(zhàn)開始時(shí),啟動(dòng)兩個(gè)計(jì)數(shù)器,玩家每發(fā)射一發(fā)子彈,計(jì)數(shù)器n加1,玩家發(fā)射的子彈每造成一次傷害計(jì)數(shù)器m加1,當(dāng)本局游戲結(jié)束時(shí),就會(huì)得到兩個(gè)確定的值n和m,如果兩者的比值大于反外掛系統(tǒng)設(shè)定的上限值,則判定該玩家使用外掛,終止游戲。如果兩者比值小于該上限值,則把玩家添加進(jìn)白名單,經(jīng)過一段時(shí)間后,再進(jìn)行監(jiān)視,盡量減少服務(wù)器壓力。
總之自動(dòng)瞄準(zhǔn)類外掛的防御程序的設(shè)計(jì)思路還有很多其它方法,比如外掛運(yùn)行窗口檢測(cè)、玩家的行為分析等方法,但是本文認(rèn)為上面兩種方法監(jiān)聽準(zhǔn)星和監(jiān)視命中率更為簡(jiǎn)潔和可靠。
雜談
騰訊的TP反作弊算得上是效率最高的反作弊系統(tǒng),TP反作弊的機(jī)制是通過掃描玩家硬盤,確認(rèn)是否有疑似外掛的程序存在。但這一行為在很多國(guó)家和地區(qū)是不被允許的,去年歐盟國(guó)家更正完計(jì)算機(jī)用戶隱私條例后,就對(duì)在歐盟國(guó)家中使用TP等硬盤掃描反作弊系統(tǒng)的游戲發(fā)出了警告。
《絕地求生》還采用過特征碼的反作弊方式,每天都在更新,甚至一天更新兩三次。而每一次更新都會(huì)讓現(xiàn)有的大部分外掛失效。既然打不過你,還可以以逸待勞累死你。
還有一些公司不走尋常路,跳出了傳統(tǒng)中路對(duì)線的思維局限,選擇直接招安外掛的開發(fā)者來替自己針對(duì)其它外掛,簡(jiǎn)直妙哉
暴雪在這種事上就顯得亦剛亦柔。一面出高價(jià)買下插件開發(fā)者為《魔獸世界》開發(fā)的各種”好插件”——有些破壞游戲環(huán)境的插件與外掛無異,有些則可以有機(jī)地融入到游戲玩法中;另一面又和德國(guó)的Bossland Gmbh打了八年官司,直到Bossland服軟才罷休。
順帶一提,Bossland不僅僅是開發(fā)了《魔獸世界》的掛,他們給暴雪全家桶里的所有游戲都寫了掛。
最為魔幻的是,外掛問題在我國(guó)國(guó)外游戲作弊泛濫的環(huán)境里,卻被本土廠商和代理很好地遏制住。而這無疑要先歸功于我國(guó)的法律。
國(guó)內(nèi)對(duì)外掛案件的處理,在國(guó)內(nèi)主要有三個(gè)罪名——非法經(jīng)營(yíng)罪(最高15年有期徒刑),侵犯著作權(quán)罪(最高7年有期徒刑)和破壞計(jì)算機(jī)信息系統(tǒng)罪(最高15年有期徒刑)。目前實(shí)際國(guó)內(nèi)外掛案件判例中比較嚴(yán)重的外掛犯罪,通常會(huì)判5年左右有期徒刑。
有效動(dòng)用法律手段,既維護(hù)了開發(fā)商和運(yùn)營(yíng)商的利益,也維護(hù)了玩家的體驗(yàn)。之前騰訊手撕了《穿越火線》的外掛開發(fā)者,判了兩年有期徒刑;最近的《新天龍八部》的”冰焰”外掛也備受社會(huì)矚目,因?yàn)殚_發(fā)者是一名中科大博士,可惜因?yàn)橥鈷鞌嗨土俗约旱纳摹?/p>
————————————————
版權(quán)聲明:本文為CSDN博主「popcorn丶」的原創(chuàng)文章