周標(biāo)強(qiáng)
【摘 要】隨著智能手機(jī)的不斷普及,手機(jī)游戲用戶將在2018年接近6億人,預(yù)計(jì)到2018年中國手游市場規(guī)模將接近700億元。如此大的市場規(guī)模,必定會引起手游產(chǎn)品的激烈競爭。手游產(chǎn)品若想獲得更長的生命周期,留住忠實(shí)“粉絲”用戶,守護(hù)在市場中應(yīng)得的盈利,除了手游產(chǎn)品本身完整精美之外,游戲任玩家操作搗鼓、抗第三方工具或黑客惡意修改、防止競爭對手對游戲核心成果的竊取和篡改也是至關(guān)重要的。
【關(guān)鍵詞】Unity;反作弊;DllAPK
【中圖分類號】TP311.52 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2017)03-0059-03
游戲反作弊系統(tǒng)是一款A(yù)ndroid端游戲加固型通用工具,可以對任意一款A(yù)ndroid游戲apk純凈包進(jìn)行加固,包括對游戲代碼的加密,防止用戶使用模擬器游戲,防止用戶修改游戲貨幣、道具和資源等數(shù)據(jù),防止用戶修改游戲速度,防止用戶因修改游戲內(nèi)容阻礙其他玩家正常游戲,保障其他正常玩家及付費(fèi)玩家能順利游戲。
1 目前市場上已有的加固產(chǎn)品的缺點(diǎn)分析
(1)大多數(shù)加固服務(wù)產(chǎn)品都是基于為app應(yīng)用類apk安裝包加固為設(shè)計(jì)標(biāo)準(zhǔn),極少有針對游戲apk安裝包加固而設(shè)計(jì)的加固服務(wù)產(chǎn)品,特別是針對unity 3d版制作生成的游戲apk安裝包,其加固要求、加固內(nèi)容與加固app應(yīng)用還是有區(qū)別的。
(2)如果先給游戲apk安裝包加固,每個加固服務(wù)商都要求加固前后的apk安裝包證書一致。對于開發(fā)者來說,開發(fā)者并沒有渠道發(fā)行商的打包證書,即便是簽了合作合同,渠道發(fā)行商也不會將打包證書外流供開發(fā)者使用,打包證書只是由開發(fā)者將apk上傳至渠道發(fā)行商后臺時(shí),由渠道發(fā)行商的系統(tǒng)自動更換,如若采用此操作,加固過后無法更換證書,游戲無法發(fā)行;如果不加固直接發(fā)行,發(fā)行后游戲有可能會被黑客使用模擬器、修改器等工具進(jìn)行危害,各種腳本、外掛、作弊器、分析調(diào)試、內(nèi)存數(shù)據(jù)竊取和篡改都是對游戲造成不安全的因素,最終還有可能破解游戲,造成玩家失去游戲的公平和快樂,開發(fā)者的創(chuàng)作產(chǎn)品和制作心血也將付水東流。
(3)有些渠道發(fā)行平臺根本沒有針對apk安裝包的后臺操作系統(tǒng),作為開發(fā)者,不知道apk安裝包的各環(huán)節(jié)的流程進(jìn)度,是否審核成功被發(fā)行,上傳apk包打上簽名證書后,也不知道在哪里下載。
(4)有些渠道發(fā)行平臺收到apk安裝包后,就開始審核,審核成功后立即發(fā)行,沒有加固的apk安裝包就已經(jīng)流入市場。作為開發(fā)者,并不能要求發(fā)行商先將apk打上證書,再交由開發(fā)者和加固服務(wù)商加固apk,此過程,開發(fā)者和加固服務(wù)商都完全接觸不到渠道發(fā)行平臺的審核人員,無法溝通發(fā)行進(jìn)程。
(5)對于適用的個別渠道發(fā)行平臺,受到時(shí)間的極大限制。開發(fā)者上傳apk安裝包到渠道打上apk簽名證書時(shí),需要單獨(dú)聯(lián)系客服人員,取回簽名過后的apk安裝包,并中斷此次審核,則之前的審核時(shí)間就白白耗費(fèi)。此外,如果游戲因BUG或其他緊急原因需臨時(shí)調(diào)整更新一個新的apk安裝包,此時(shí)恰遇節(jié)假日或非工作時(shí)間,無法聯(lián)系到客服人員,開發(fā)者就只能等待,眼睜睜地看著有問題的游戲安裝包繼續(xù)在市場上運(yùn)行,已經(jīng)修改好的bug不能立即更新到市場上,忍受著玩家不斷的抱怨卻束手無策。
(6)也有個別加固服務(wù)公司提供了定制的加固服務(wù),但服務(wù)價(jià)格非常昂貴。
2 系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)思想
(1)系統(tǒng)基于游戲apk安裝包結(jié)構(gòu),針對黑客玩家經(jīng)常對游戲操作的工具和手段,加入模擬器檢測單元、加速檢測單元、內(nèi)存修改檢測單元和加密單元等幾個重要的部分,防止利用反編譯工具對游戲中DLL文件進(jìn)行調(diào)試源碼、修改源代碼,防止黑客玩家對游戲中內(nèi)存數(shù)據(jù)的竊取、篡改和游戲速度的隨意調(diào)整,防止黑客玩家在電腦端使用模擬器對游戲外掛、作弊、分析調(diào)試,保證玩家在游戲既定的環(huán)境下操作及游戲。
(2)系統(tǒng)通過對游戲核心模塊的保護(hù),攔截了黑客對游戲資源的入侵、竊取、攻擊,有效地保護(hù)了游戲開發(fā)者及游戲利益相關(guān)者的權(quán)益,游戲開發(fā)者可以把全部心思都放在游戲的創(chuàng)造和制作,不必再為游戲遭受黑客的入侵而擔(dān)心,不必再為游戲遭受黑客的攻擊而煩惱,不必再面對煩瑣的發(fā)行流程而束手無策。
(3)游戲apk安裝包經(jīng)本系統(tǒng)加固,游戲開發(fā)者可使用自己的簽名證書打包apk,加固后,可上傳至各渠道發(fā)行平臺進(jìn)行審核發(fā)行,如平臺要求apk安裝包需修改為渠道發(fā)行平臺的簽名證書,上傳后由渠道自行修改,且不會影響加固效果;如渠道沒有修改簽名證書的要求,apk安裝包可直接發(fā)行投放市場使用。
(4)系統(tǒng)簡單易用,游戲開發(fā)者只需準(zhǔn)備好游戲apk安裝包和簽名證書即可。相較于使用第三方加固服務(wù)產(chǎn)品,大大減少了加固階段消耗的時(shí)間。比如上傳apk到加固服務(wù)方的網(wǎng)絡(luò)耗時(shí),加固異常時(shí)聯(lián)系服務(wù)商處理加固異常問題的溝通耗時(shí),加固環(huán)節(jié)到發(fā)行環(huán)節(jié)的操作耗時(shí)等,加固完成后可直接上傳渠道發(fā)行平臺進(jìn)行審核發(fā)行運(yùn)營,進(jìn)一步提高了游戲發(fā)行上線的速度效率;同時(shí),也為專門的游戲開發(fā)者降低了游戲發(fā)行成本,可節(jié)省一筆游戲加固服務(wù)費(fèi)用用于游戲技術(shù)創(chuàng)新和游戲品質(zhì)的提升。游戲開發(fā)者如果有多款游戲產(chǎn)品,也可統(tǒng)一使用此系統(tǒng)加固,方便可靠。
3 系統(tǒng)的單元結(jié)構(gòu)描述
系統(tǒng)包括解析單元、加密單元、生成單元、檢測庫啟動包、加固單元、加速檢測單元、模擬器檢測單元、內(nèi)存修改檢測單元;解析單元與加密單元進(jìn)行連接,加密單元與加固單元進(jìn)行連接,生成單元與加固單元進(jìn)行連接,檢測庫啟動包與加固單元進(jìn)行連接,加速檢測單元與加固單元進(jìn)行連接,模擬器檢測單元與加固單元進(jìn)行連接,內(nèi)存修改單元與加固單元進(jìn)行連接。各單元關(guān)系連接圖如圖1所示。以下是對各單元進(jìn)行描述。
(1)解析單元:本單元將要加固的apk安裝包按Android工程格式解析并還原,本單元將游戲apk安裝包無縫還原,保證游戲中所有的資源的完整性。
(2)加密單元:本單元是系統(tǒng)的核心部分,安卓平臺的apk安裝包本質(zhì)上是一個zip文件,其結(jié)構(gòu)如圖2所示。
classes.dex:Android下的可執(zhí)行文件,也就是Java在Android系統(tǒng)下的字節(jié)碼文件。
resources.arsc:資源文件的索引文件,提供資源文件id到文件路徑的映射關(guān)系及字符串value。
AndroidManifest.xml:清單文件,注冊應(yīng)用中的四大組件、Application、權(quán)限等信息。
assets文件夾:存放應(yīng)用的資源文件,包括運(yùn)行在U3D上的DLL文件及其他圖形、聲音、視頻、模型資源文件。
lib文件夾:存放so文件,包括U3D的libmain/libmono/libunity 3個so文件。
META-INF:存放簽名相關(guān)的文件。
res文件夾:存放原生Android應(yīng)用的資源文件。
加密方式有很多種,目前主要包括以下幾種。①dex文件保護(hù):采用分片式按需加載技術(shù),攻擊者無法在內(nèi)存中獲取完整的dex文件,再加上dex內(nèi)存分散功能,攻擊者無法從一片連續(xù)的內(nèi)存中Dump出dex文件。②so文件保護(hù);御安全加固保護(hù)邏輯,通過源碼級的混淆,采取多種混淆方式,攻擊者無法逆向其代碼邏輯,此外,基于動態(tài)加載的so加殼技術(shù),也使得攻擊者無法逆向保護(hù)邏輯及原apk中so的代碼邏輯。③資源文件保護(hù):防御安全加固系統(tǒng),可以針對apk的Assets及Res目錄下的所有文件進(jìn)行加密保護(hù)并進(jìn)行完整性校驗(yàn),經(jīng)過御安全加固系統(tǒng)加固后的apk,資源無法被篡改,例如無法增加廣告界面,也無法盜版apk里面的資源,可以很好地保護(hù)開發(fā)者的知識產(chǎn)權(quán)。
本系統(tǒng)采用第3種加密方式,加密單元對unity 3d編譯生成apk安裝包中的游戲代碼dll文件安全加密與解密保護(hù),保護(hù)dll文件不被非法竊取、篡改;防止非開發(fā)人員利用Reflector反編譯工具、Reflexil分析插件對unity 3d游戲的dll文件進(jìn)行調(diào)試源代修改、源代碼等。
(3)檢測庫啟動包:此包用來啟動模擬器檢測庫、加速檢測庫、內(nèi)存檢測庫等檢測程序。
(4)加固單元:本單元是系統(tǒng)的關(guān)鍵部分,本單元將加密后的文件加入模擬器檢測庫、加速檢測庫、內(nèi)存修改檢測庫,最后加入檢測庫啟動包。經(jīng)過加固后的文件會基于以下方式運(yùn)行:首先運(yùn)行檢測庫啟動包,其次通過檢測庫啟動包啟動模擬器檢測庫、加速檢測庫、內(nèi)存檢測庫,最后運(yùn)行安裝包程序。
(5)加速檢測單元:本單元檢測有關(guān)加速模塊是否被修改,一般是檢測gettimeofday、clock_gettime或其他相關(guān)變量值或函數(shù)。
(6)模擬器檢測單元:本單元檢測模擬器是否存在,是否開啟,是否含有模擬器特征的程序在運(yùn)行,防止模擬器非法運(yùn)行,進(jìn)行非法刷量與惡意調(diào)試等。模擬器可以使android apk在電腦端運(yùn)行,這是非常危險(xiǎn)的,受保護(hù)后,可以防止運(yùn)行在PC上的任何類型的android模擬器,防止電腦端的腳本、外掛、作弊器、分析調(diào)試工具的運(yùn)行,防止電腦端各種不安全因素對游戲造成的危害。
(7)內(nèi)存修改檢測單元:本單元檢測內(nèi)存中相關(guān)的模塊名、是否有相關(guān)修改內(nèi)存的包名、是否有修改器功能的特征。本單元是對內(nèi)存數(shù)據(jù)的專業(yè)高級保護(hù),可防止內(nèi)存調(diào)試,防止內(nèi)存數(shù)據(jù)被修改,避免黑客通過內(nèi)存信息破解游戲。如果不對游戲進(jìn)行高級內(nèi)存數(shù)據(jù)保護(hù),游戲在運(yùn)行時(shí)可能存在內(nèi)存中的數(shù)據(jù)被篡改和竊取的風(fēng)險(xiǎn)。系統(tǒng)工作流程圖如圖3所示。
4 結(jié)語
設(shè)計(jì)實(shí)現(xiàn)一款通用游戲反作弊系統(tǒng),對已經(jīng)完成制作的游戲apk安裝包進(jìn)行加固是很有必要的,它對游戲產(chǎn)業(yè)的健康發(fā)展具有重大意義。
本系統(tǒng)通過對游戲核心模塊的加固阻礙黑客直接竊取游戲開發(fā)者的勞動成果,阻礙黑客或者非開發(fā)者利用反編譯工具對游戲源代碼及支付模塊代碼的竊取和修改,保障了玩家在游戲中支付后,得到應(yīng)得的商品和服務(wù),促進(jìn)游戲中正常交易的順利進(jìn)行,保障了玩家的利益。只要玩家利益得到了保障,玩家才會繼續(xù)在游戲中投入充值,給開發(fā)者和營運(yùn)者帶來收益;同時(shí),也保障了游戲的收益屬于開發(fā)者和發(fā)行商,利益不被竊取,促進(jìn)游戲行業(yè)、游戲產(chǎn)業(yè)的發(fā)展,保障游戲行業(yè)及游戲產(chǎn)業(yè)鏈帶來的經(jīng)濟(jì)效益,是游戲產(chǎn)業(yè)鏈經(jīng)濟(jì)體制中不可缺少的保護(hù)工具。
參 考 文 獻(xiàn)
[1]簡靖韡.Android智能手機(jī)信息安全問題與對策分析[J].通訊世界,2015(24):33.
[2]佚名.Unity3D[EB/OL].http://Unity3D.com,2016-
12-05.
[3]佚名.細(xì)說安卓模擬器和真實(shí)設(shè)備的區(qū)別[EB/OL].http://
bbs.ednchina.com/FORUM_POST_17_520621_0.HTM,
2013-03-26.
[4]佚名.Felix Matenaar,PatrickSchulz,Detecting An-
droid Sandboxes[EB/OL].http://www.dexlabs.org/blog/
btdetect,2012-08-10.
[5]佚名.手游通用加速器功能分析及匯總[EB/OL].http://
gslab.qq.com/article-12-1.html,2015-12-01.
[6]張躍騫.Android APP保護(hù)及破解[J].中國教育網(wǎng)絡(luò),2016(Z1):44-46.
[7]豐生強(qiáng).Android軟件安全與逆向分析[M].北京:人民郵電出版社,2013:78-90.
[8]杜吉志,徐明昆.Android系統(tǒng)內(nèi)存管理研究及優(yōu)化[J].軟件,2012,24(5):69-80.
[責(zé)任編輯:鐘聲賢]