日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

艾格拉斯张鹏:重度手游防外挂及安全

發(fā)布時間:2024/1/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 艾格拉斯张鹏:重度手游防外挂及安全 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

艾格拉斯張鵬:重度手游防外掛及安全

圖/文 游戲茶館

前言

? ? ? ? ?2015年1月10日,【問道一線】品牌沙龍第一期,有幸邀請到的艾格拉斯創(chuàng)始人之一、CTO張鵬先生,以《游戲防外掛及安全》為主題,進行了近60分鐘的線下分享。在文前,再次向艾格拉斯,及張鵬先生本人表示誠摯的謝意。


? ? ? ? ?張鵬以艾格拉斯自研、自運營,2012年7月上線,目前支持8個語種的重度手游《英雄戰(zhàn)魂》為背景,對游戲安全做以下五個大類做分享:游戲服務(wù)器防外掛、游戲服務(wù)器防黑、web平臺的api安全、客戶端防外掛和備份。
(注:【問道一線】是游戲茶館和CSDN共同主辦,獨屬于開發(fā)者的純技術(shù)小型手游分享會,每期一個主題,根據(jù)主題邀請一線人物獻身說案,講述開發(fā),運營中,跳過的那些“坑”。俗稱,開發(fā)純干貨。)


一、游戲服務(wù)器防外掛

1、客戶端的安全和網(wǎng)絡(luò)連接

? ? ? ? ?做ARPG,通信這塊兒是要非常注重安全的,曾經(jīng)我們遇到過,有用戶用截包器把包攔下來了,然后把數(shù)據(jù)改了,再發(fā)過來。其實現(xiàn)在,在手機游戲上,之前游戲的外掛、黑客,都能遇到。
? ? ? ? 我們在通信這塊兒,是強鏈接,在加密的方式上,你的密鑰不能是固定的,我們使用的是一個有序的秘鑰,比如,這次我們是“1”,下次是“2”,在下次是“3”……當(dāng)然,這只是舉了一個例子。
? ? ? ? 這樣做的好處是,一旦你的游戲包被用戶截住以后,他沒有把辦法通過這個包的秘鑰或固定方式去破解。當(dāng)然,他要是看到了你游戲的原碼或者是分析了代碼的工作方式,那也沒轍。因為這是在客戶端做的事情。
? ? ? ? 更加完整的加密方式,需要非對稱加密。服務(wù)端和客戶端約定一個鑰匙,這個鑰匙需要一個公鑰和次鑰進行匹配,通過約定的鑰匙雙方進行通信。每個包在發(fā)送之前,都是用不同的鑰匙加密,每次加密通過錯位等方式,將相同數(shù)據(jù)加密的結(jié)果每次都不一樣,這樣他們就很難分析。
? ? ? ? 以前在PC活躍的外掛開發(fā)者,在做手游外掛的時候,基本是無所不用其極,我們遇到最嚴重的,是直接把安卓包,直接把里面的SO這個文件破解,反編譯把其中一個指令給改了。
? ? ? ?首先第一點,在游戲過程中得把大門守好。


2、防加速

? ? ? ? 加速是最影響用戶體驗的行為。也是對游戲影響最直接的。之前,《英雄戰(zhàn)魂》也遇到過這樣的問題,有一個玩家,他發(fā)某一個技能的頻率就很高,游戲是10秒發(fā)一次,他是1秒發(fā)一次;另外是對其他用戶,兩個人PK,用戶花的錢比對手多,卻一秒鐘被打死了。
? ? ? ? 這個怎么解決?由客戶端向服務(wù)器,定期的發(fā)一個數(shù)據(jù)包,這個包的內(nèi)容是當(dāng)前時間。這樣子可以做2各方面的事情:一方面是服務(wù)器能根據(jù)包,接收到這個包的頻率,這個包發(fā)過來監(jiān)測客戶端,如果加速了,客戶端頻率會升高(當(dāng)然會有一個誤差值),如果過高我們會給他暗地里記上一筆,如果持續(xù)增高,那么這個用戶就是在作弊了。還有一種加速是,不改發(fā)包頻率,改客戶端某一個操作的頻次,提高頻次,服務(wù)器通過頻率沒法解決,可以客戶端的時間來監(jiān)測。
? ? ? ? 一般加速外掛,不是針對某一游戲設(shè)計的,是通用的,把整個系統(tǒng)或者是進程的速度提升上來。通過客戶端第一個包和最后一個包的時間差,與服務(wù)器第一個包和最后一次接受的包的時間做比較,如果時間差越來越大,那么這個玩家就是在作弊。

3、賬號登陸校驗

? ? ? ? 賬號登陸系統(tǒng),防止用戶被盜號。有時候,游戲設(shè)計者會把用戶名和密碼放在客戶端,如果有些用戶裝著惡意程序,有可能會被盜號,那么驗證這一塊兒,主要是防止用戶的密碼在傳輸?shù)倪^程中被盜。比如HTTP在傳輸過程中,密碼傳輸和簡單的加密,都很容易被破解。
? ? ? ? 一種方式是,使用HTTPS,現(xiàn)在基本大的網(wǎng)站和安全性比較高的網(wǎng)站,比如淘寶、支付寶這樣子的,登陸都使用的是HTTPS,另一個就是,采用服務(wù)器與服務(wù)器之間的通信,這個是可信的,然后為了使傳輸過程中,密碼不泄露,采用了MD5加密(這個加密是單向加密,只能加不能減),最后匹配這2個MD5的串兒密碼是不是一樣的。
? ? ? ? 有一個經(jīng)驗給大家分享:如果你用它的密碼,生成了一個MD5的串兒,那這個串兒就會永遠有效,用戶也可以拿著去登陸,這個是不允許的,所以我們在這個加密MD5的時候,讓它加入一個時間戳,這個時間戳,它不能太精準,太精確會有問題。比如你精確到秒級,服務(wù)器那端也是秒級, 這2個串兒的驗證是通不過的。比如,那個是3秒加密的,到這邊也需要3秒加密,而實際上服務(wù)器這邊是變化的,隨著時間增加,所以把時間精確到10分鐘以內(nèi)比較合適,再設(shè)置時把時間單位精確到毫秒,但把后面6位都填為0,然后它的時間應(yīng)該在17分鐘左右,往前推17分鐘,往后推17分鐘,這樣產(chǎn)生一個MD碼,那么就是加密方和匹配方,這2個只要相差在正負17分鐘之內(nèi),就是可以驗證通過的,這樣就能防止用戶拿著一個MD5碼就去登陸。

4、關(guān)鍵數(shù)據(jù)服務(wù)器校驗

? ? ? ? ?關(guān)鍵數(shù)據(jù)(如技能CD、走路速度及距離)服務(wù)器校驗,防止技能加速,瞬移,穿墻。部分采信客戶端,關(guān)鍵數(shù)據(jù)以服務(wù)器為基準。戰(zhàn)斗數(shù)值以服務(wù)器為準。
? ? ? ? ?游戲過程中如果用戶采用加速或者是修改客戶端的形式,使一些關(guān)鍵數(shù)據(jù),比如發(fā)招的頻率發(fā)生改變的時候,你不能無所事事了,這時候你需要去做一個校驗,允許這個大招每10秒才能發(fā)送一次,那么我就記下,把這個招的上次發(fā)生的時間和這次發(fā)生的時間,考慮網(wǎng)絡(luò)傳輸?shù)臅r間差(需要有一定誤差允許),比如你在7、8秒發(fā)過來我也是允許的,但是你要是在5秒或者是更短的時間發(fā)過來,就不被允許了。你可以發(fā),但是不會生效,就像某個人打了一拳過去,但是并沒有少血。
? ? ? ? 有時候,你判定太嚴的話,用戶有時候真的是因為是網(wǎng)絡(luò)原因傳輸速度的問題,導(dǎo)致用戶被踢下線了,打電話過來質(zhì)問客服。以前,客服就有被罵哭的。其實,我們在驗證的時候,不能太嚴,如果多次被記錄有違規(guī)的情況,給他再做進一步處理。
? ? ? ? 主要是說,服務(wù)器端對一些關(guān)鍵性的東西,要做一些校驗,并且這個在計算過程中,以服務(wù)器為準,目前,我們公司的游戲,大多所有戰(zhàn)斗、傷害數(shù)值等有關(guān)的數(shù)值,都是以服務(wù)器產(chǎn)生的,在最多的時候,服務(wù)端會說,我打到誰了,服務(wù)端會驗證,可不可能打得著。戰(zhàn)斗過程的傷害這些,全是由服務(wù)器來計算的。客戶端,作為一個表現(xiàn),來反饋給用戶。

5、監(jiān)控指令發(fā)送頻率

? ? ? ? 這個監(jiān)控指令的發(fā)送頻率,跟剛才那個是有關(guān)系的,某一些指令你發(fā)送過于頻繁的話呢,會導(dǎo)致這個游戲失去平衡,用戶在它那兒,只要對他有利的,任何辦法,他都可能用得上,所以,是需要監(jiān)控某一些指令的發(fā)送頻率。
? ? ? ? 為什么單列出這一點,是有一些指令它其實發(fā)送頻率本來就很高,有一些是每秒甚至每500毫秒發(fā)一次,所以你在校驗的時候,很難在2個指令之間判定是否符合條件,因為網(wǎng)稍微卡一下,200毫秒就過去了,如果這個技能是500毫秒的話,它已經(jīng)超過一半了,所以很難。所以,統(tǒng)計一段時間之內(nèi)的平均發(fā)送頻率,這樣最終能夠判定這個用戶是否真正在作弊。一段時間之內(nèi)平均發(fā)送時間超過了一半,那么就是有問題的。
? ? ? ? 那么,當(dāng)我們監(jiān)測到用戶可能在作弊的時候,我們就讓客戶端發(fā)回來這個用戶的進程列表,然后通過這些進程列表,配置了已知的外掛的進程名字,因為世界上外掛非常多,有些用戶可能自己開發(fā)了一個外掛,所以,只能對已知的比較知名的,去比較監(jiān)測,如果說有大量的用戶反饋,某一個用戶在作弊,然后我們會調(diào)出來他的進程列表,看是否有可疑。比如,如果有一個人在每次被反映他在作弊的時候,都有一個進程,并且這個進程是未知的,不知道是干嘛的,那就比較可疑了。那么,這件事情,就變成人工的了。


二、游戲服務(wù)器防黑

? ? ? ?當(dāng)游戲相對市場來說,用戶比較多的時候,黑客就有利可圖。

1、操作系統(tǒng)最小化安裝

? ? ? ? 首先,很多公司都是用linux,用windows很少了。在裝的時候,最小化安裝,然后開放的服務(wù)和端口最少,只把我們需要的應(yīng)用端開了,其他的端口都關(guān)著。因為,有些應(yīng)用它有漏洞,如果你沒有專業(yè)的技術(shù)去處理這些問題,很有可能他就從某一個漏洞進來了。


2、 遠程操作限制

? ? ? ? 然后,我們一般是用SSH去登陸遠程的計算機,還有呢我們的mysql端口,這些面向公網(wǎng)開放的話,是很不安全的,后來呢我們利用ss5代理登陸ssh,mysql,所有游戲服務(wù)器,采用遠程終端管理系統(tǒng)進行管理,服務(wù)器自上架后,所有的管理操作由此系統(tǒng)完成,管理系統(tǒng)單點登錄,僅開放一個服務(wù)端口,有效防止黑客入侵。對操作者來說是一樣的。當(dāng)然,如果公司比較有錢,可以搞一個硬件防火墻。
? ? ? ?ss5代理服務(wù)器安全,啟用SSH證書登錄驗證,禁止root密碼登陸方式。這樣,可以防止密碼泄露的情況下被黑。


3、GM遠程操作限制

? ? ? ? 另外一個,遠程操作限制。最早的時候,有用戶切入到系統(tǒng)里面來了,拿到了我們GM工具,這是給客服用戶,它拿到這個東西以后,開始給別人加錢,在淘寶上賣,賣磚石,賣代幣這種形式來串改游戲數(shù)據(jù)。后來,我們在這塊兒加入了一個用戶驗證信息,以服務(wù)器到服務(wù)器的通信形式。現(xiàn)在登陸的這個用戶是否是合法的。

4、應(yīng)用啟動權(quán)限

? ? ? ? 在服務(wù)器上,起應(yīng)用的時候,千萬不用root,我們最早那波被入侵的時候,就是因為我們的java應(yīng)用或者是服務(wù)什么,都是以root來啟動,然后黑客一旦進來以后,什么都看見了,最后把所有的系統(tǒng)整理以后,不能以root方式啟動,必須給他創(chuàng)建一個新的用戶, 然后用那個用戶啟動,并且那個用戶,只對那個文件夾或某一個應(yīng)用生效,要不然就很危險。

5、數(shù)據(jù)庫管理

? ? ? ?mysql用戶權(quán)限分離:root,操作用戶,游戲用戶數(shù)據(jù)庫的密碼文件采用多次加密方式,系統(tǒng)內(nèi)不存在明文密碼。并且數(shù)據(jù)庫密碼周期性的更新。防止侵入后,數(shù)據(jù)庫密碼泄露。
? ? ? ?把操作用戶分離,跟系統(tǒng)這塊創(chuàng)建新的用戶來運行是一樣的道理。就是不能把root開放給游戲或者是很多的人。最后,就是系統(tǒng)內(nèi)核、數(shù)據(jù)庫、jdk及時升級或打補丁。

?案例1:

? ? ? ? 早期,因沒有啟用socks5單點登陸服務(wù)器,服務(wù)應(yīng)用采用root啟動,僅使用iptables來限制,遭到了黑客入侵,利用服務(wù)漏洞進入我們服務(wù)器,并安裝木馬代碼塊,利用“中國菜刀” 遠程登陸入侵。
? ? ? ? 這個叫“中國菜刀”的黑客工具,入侵進來以后,在我們一個HTTP的一個服務(wù)器上,掛了這個東西。這實際上是一個很簡單的PHP/JSP 的一個網(wǎng)頁,但他能通過這個網(wǎng)頁做很多事情。它獲取到GM工具以后,拿到了比較高權(quán)限的用戶密碼,把號盜走了。


案例2

? ? ? ? ?早期,黑客利用專有g(shù)mtool工具入侵游戲服務(wù)端修改數(shù)據(jù)
? ? ? ? ?解決辦法,啟用了認證服務(wù)器,服務(wù)器應(yīng)用https服務(wù),采用s2s通信,避免入侵及損失。



三、web平臺的api安全

? ? ? ?通常web平臺的安全主要指通行證驗證系統(tǒng),充值系統(tǒng)服務(wù)端,渠道sdk服務(wù)端。

1、應(yīng)用服務(wù)器管理功能限制

? ? ? ? 應(yīng)用服務(wù)器(Glassfish)的管理端口只允許ss5代理服務(wù)器的IP訪問;應(yīng)用服務(wù)器使用非root用戶啟動,以防止黑客入侵成功后獲得操作系統(tǒng)的控制權(quán)限,并通過iptables的端口轉(zhuǎn)發(fā)功能,將對80端口的請求轉(zhuǎn)發(fā)至應(yīng)用服務(wù)器提供服務(wù)的端口;
? ? ? ? 對游戲服務(wù)器或渠道方訪問的API接口(如:充值回調(diào))設(shè)置了IP白名單;我們公司使用的是一個Glassfish集群提供的一些充值等服務(wù),他的管理端口不能對公眾開放,必須使用單點登陸的方式去訪問,使用非root啟動,少開端口,對一些比較特別的IP使用白名單,Ip白名單,比如說:充值回調(diào)。百度、360等渠道告訴我們這個游戲充值成功了的時候,只允許它個別的IP來訪問,不允許公眾來訪問。

2、密碼別名

? ? ? ?在應(yīng)用服務(wù)器內(nèi)配置需要使用密碼的資源時(如:數(shù)據(jù)庫連接池),通過應(yīng)用服務(wù)器提供的密碼別名功能,隱藏數(shù)據(jù)庫賬號的明文密碼。
? ? ? ?當(dāng)部署的應(yīng)用需要使用數(shù)據(jù)庫資源時,只需將別名注入到應(yīng)用中,應(yīng)用只能獲得數(shù)據(jù)庫連接,無法獲取到數(shù)據(jù)庫賬號。
?防止在開發(fā)過程中,數(shù)據(jù)庫還有一些其他的密碼泄露。解決密碼以明文方式顯示。

3、數(shù)據(jù)庫限制

? ? ? 為應(yīng)用分配賬號時,創(chuàng)建獨立的表空間,且只對此賬號可見,同時收回賬號對表、表索引、存儲過程、函數(shù)的刪除權(quán)限


四、客戶端防外掛

1、資源檢測機制

? ? ? ? 由于限制了其他作弊方式,玩家中通過修改客戶端的資源來使某些值變化,比如速度值,技能cd等。
? ? ? ?檢測客戶端資源文件md5,報告給服務(wù)器做驗證。

2、內(nèi)存數(shù)據(jù)混淆和修改

? ? ? ?關(guān)鍵數(shù)據(jù)內(nèi)存混淆已及修改檢測,玩家位移,玩家位置的檢測,跟客戶端的關(guān)鍵數(shù)據(jù)內(nèi)存混淆相結(jié)合,關(guān)鍵數(shù)據(jù)傳送服務(wù)器校驗,位移位置數(shù)據(jù),有效防止玩家穿墻,加速,瞬移等作弊手段。
? ? ? ?有些用戶用瘋狗還有其他內(nèi)存修改器,去改游戲運行過程當(dāng)中的數(shù),當(dāng)然怎么改,通過不同的匹配數(shù),改一下匹配一下,改一下匹配一下,最后查找到這個位置是血,然后把它鎖定成10萬,永遠不死的。改了以后,再去和別人PK,把血鎖定,就永遠不會死。怎么解決?一個是我通過要服務(wù)器去驗證,另外一個在客戶端,在制作的時候,把關(guān)鍵數(shù)據(jù)在內(nèi)存里面混淆。
? ? ? 在內(nèi)存里不是以一個通常的數(shù)字放在里面,而是經(jīng)過加密,用戶是找不著這個數(shù)的,普通的用戶不能通過內(nèi)存修理器去改這個數(shù)據(jù)。

3、文本資源加密

? ? ? ? 通過可逆的加密算法,加密敏感的文本資源,使用戶不能通過簡單的二進制查看得到具體的內(nèi)容。
? ? ? ?這個通常不會對游戲平衡性產(chǎn)生影響,但是也不好。從公司出去的東西,不讓用戶改,自定義改變格式,用戶就不可以用一些普通的方式去竄改。
? ? ? ? 數(shù)據(jù)庫,主從要分離。當(dāng)你的用戶量很大的時候,主庫寫,從庫讀。主庫不要做統(tǒng)計功能,比如你要看日活多少,3天內(nèi)登錄多少,不要在主庫上去做,在從庫上去做,這樣不影響主庫服務(wù)用戶。以前,我們嘗試過半夜3點鐘去做這些統(tǒng)計,但還是有一會兒用戶就登不上。
? ? ? ? 然后把二進制LOG打開,防止在極端的情況下,回檔。有時候,硬件壞了的情況,數(shù)據(jù)配置錯了,刷錢,刷物品等。把這些工作做好了,你想恢復(fù)到幾點幾分,都能恢復(fù)過去。我們一般是保存10天。
? ? ? ? 每一天有一個備份,這個東西是實時的,這個是冷備,我可以從某一天備份的時間,和編LOG的時間。每次大家在更新之前,一定要備份,防止策劃、程序上的一些BUG,導(dǎo)致用戶在上去以后把數(shù)據(jù)搞亂了。
? ? ? ?服務(wù)器最好用raid,我們主要的數(shù)據(jù)庫呢都是用raid10,一個是速度快,另外是它安全性很高。

后記

? ? ? ? 分享這些,是希望大家提一個概念性的東西,知道哪些地方有坑,因為我們做每一件時間、人力和金錢的成本。遇到安全性問題,一定要馬上解決,因為用戶的信心非常重要,如果用戶信心崩塌了,你這個游戲基本就走不遠了。今天,我對我們遇到了哪些坑兒,是怎么解決的分享,就到這兒。謝謝。




總結(jié)

以上是生活随笔為你收集整理的艾格拉斯张鹏:重度手游防外挂及安全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。