遊戲開發者如何從容應對Unity手遊風險?

2020-12-06 騰訊網

  以下為正文:

  3月25日,2018 Unity技術路演首站:移動遊戲技術分享日在廣州舉辦。此次活動,旨在為移動遊戲開發者們搭建一個更好的交流平臺,學習Unity在移動遊戲開發領域的最新工具與應用技巧,分享最炫酷的遊戲開發與行業應用案例,了解移動遊戲開發中的安全問題所能給企業帶來的隱患,幫助開發者提前感知安全隱患,避免受到損失。

  網易雲易盾移動遊戲安全技術專家陳士留

  網易雲易盾移動遊戲安全技術專家陳士留出席交流活動,並進行了《Unity手遊風險及安全問題——網易雲易盾來保駕護航》的技術演講。在分享中,他介紹了時下Unity手遊面臨的眾多風險及熱門外掛,並重點講解了易盾安全解決方案的技術原理和實踐案例。

  一、Unity手遊面臨的風險

  據統計,2017年國內活躍移動遊戲APP應用約有9000款,其多數存在被破解、惡意代碼插入、廣告插入、外掛、二次打包等安全問題。而這些安全問題為企業帶來隱患是,研發難度增加,研發成本的提高、玩家付費意願減低、遊戲失去公平性,玩家流失,直接損失收入——因此,破除Unity手遊風險對於開發者來說十分重要。

  常見的Unity手遊風險主要包括破解風險、外掛工具這兩類。

  破解風險

  破解風險主要有Unity mono腳本解密、Unity il2cpp腳本解析、Assetbundle資源篡改這三項。

  Unity mono腳本解密

  以下兩張圖為mono腳本文件的二進位形式及源碼轉換。

  Unity il2cpp腳本解析

  以libil2cpp.so和global-metadata.dat作為輸入,使用Il2CppDumper即可進行解析:

  解析出來的效果如下所示,類名、函數名以及對應的偏移都能夠被解析出來:

  目前iOS中還沒有能夠解析為源碼的工具,但是如果可以解密或解析Android腳本,將會大大方便iOS的破解。因此Android的有效腳本加密非常有必要。

  Assetbundle資源篡改

  透視功能可讓使用修改版的玩家獲取不對稱優勢。如下所示的某槍擊遊戲,將其中Assetbundle資源裡面的材質屬性修改為透明,即可達到透視的效果。

  除了資源被篡改的風險外,遊戲中還存在資源被競品盜取、分析的風險。

  存檔數據被修改

  某些遊戲存檔數據以明文形式存在,如果這些數據不去服務端校驗,或者是單機遊戲的話,則存在巨大的安全風險,遊戲的各種屬性可以直接修改。

  外掛工具

  遊戲修改器

  使用修改器能夠將傷害倍率從18%改成999.9%,使得攻擊傷害提升了幾十倍。類似的原理也可以實現無敵、秒殺、無限藍、技能無CD等效果,因此修改器對遊戲平衡的危害相當大。

  常用的修改器有燒餅修改器、八門神器和GameGuardian(GG修改器及其各種修改版),其中的GG修改器(GameGuardian)流行於即時對戰類遊戲(比如吃雞遊戲)。

  上圖為搜索數值界面,下圖為調用lua腳本界面

  某QQ群售賣的GG lua腳本

  免ROOT修改器

  免ROOT修改器是指通過第三方軟體獲得Root權限,可以訪問和修改手機遊戲中幾乎所有的文件,但這樣操作有可能影響遊戲的穩定性,出現死機、卡頓、重啟等人為性故障。

  八門神器附帶的免ROOT修改器

  GG大玩家附帶的免ROOT修改器

  遊戲加速器

  加速器分2種類型,一種是手機加速器,例如燒餅加速器、GG加速器;另一種是模擬器加速器,例如天天加速器。加速器除了可以加速,還可以減速。如下圖所示,使用燒餅加速器,背景速度會隨加速倍數加大而提高。

  遊戲破解版

  破解版提供了很多變態的功能來吸引玩家。下圖是某個站專門破解遊戲售賣進行盈利,他們除了有售賣網站,還開了淘寶店。只要月付150元,就已經超過很多遊戲的ARPU值了。這樣破解版的存在會嚴重影響普通玩家體驗,給遊戲收入和口碑都造成很大的損失。

  包括GG大玩家、光環助手等等,市面上都有各種破解版售賣。

  GG大玩家遊戲破解版,上圖為修改版列表,下圖為修改版功能

  光環助手遊戲破解版,上圖為修改版列表,下圖為修改版功能

  模擬按鍵掛

  上圖就是一個模擬按鍵掛,雖然只是模擬點擊,但是可以做到自動遊戲,可以刷各種金幣、積分,對遊戲平衡也會有比較大的影響。常見的模擬按鍵掛包括有觸動精靈、觸摸精靈、按鍵精靈、叉叉助手、遊戲蜂窩等等。

  二、易盾是怎麼做的?

  網易易盾能夠提供Unity mono DLL腳本加密、IL2CPP加密、Assetbundle加密等加密解決方案,以及反修改器、反加速、反模擬器、反調試等手遊通用保護功能和手遊風險感知。

  Unity mono DLL腳本加密

  通過修改或者HOOK mono_image_open_from_data_with_name能夠對DLL腳本加解密。mono_image_open_from_data_with_name是CSharp腳本的加載函數,如果CSharpDLL腳本做了加密,需要在這個函數執行之前解密。因此只要在這個函數這裡下斷點或者HOOK,就可以解密出原始DLL,而不需要逆向加密算法。需要注意的是,這裡有個memcpy拷貝操作,mono會把解密後的DLL在內存中留存一份拷貝。

  Unity mono DLL腳本加密經歷了三代的技術演進。

  第一代加密直接對DLL文件進行加密,在mono_image_open_from_data_with_name函數開始處解密。對於這個的破解方法很簡單,PE結構的文件,以4d 5a90 00這四個字節為magic head,這可以做為CSharp DLL腳本的特徵,只要搜索0x905a4d這個數值就可以了,由於燒餅修改器是使用10進位數值,將其轉換成10進位值:9460301。因此解密門檻很低,只要使用修改器就可以解密。

  第二代加密基於第一代加密的明顯弱點,針對解密加強了防護。解密後,把下圖所示的PE頭抹掉,使得修改器無法定位到腳本位置。因此解密門檻比較高,需要非常強的逆向開發能力才能破解。

  第三代加密針對Csharp函數做了加密,也就是方法級加密,需動態解密。

  原始未加密dnspy函數解析結果

  函數加密後dnspy函數解析報錯

  IL2CPP加密

  Il2cpp腳本信息以lib2cpp.so形式存在,結合global-metadata.dat文件內的符號信息,即可進行解析,因此需要對libil2cpp.so做so加殼,如下圖所示,原始libil2cpp.so用IDA可以看到475個導出函數:

  加固後的libil2cpp.so導出函數則為空:

  Assetbundle加密

  Assetbundle未加密時,Unity Studio可解析出各種資源:

  對Assetbundle加密後,Unity Studio就無法解析了:

  手遊通用保護功能

  除去Unity mono DLL腳本加密、IL2CPP加密、Assetbundle加密等加密解決方案外,網易易盾也能夠提供通用的手遊保護功能,包括反修改器、反加速、反模擬器、反調試、反模擬點擊、文件校驗、防二次打包、存檔加密、引擎SO定製化加殼等。一般而言,這些通用功能任何遊戲引擎都支持,可以根據遊戲需求選擇一個或多個。目前,網易易盾支持的遊戲主要包含Unity3d、COCOS、NEOX和UE4。

  反修改器

  修改器可以實現很多功能,如無限藍、技能無CD、無敵、秒殺、倍攻等,是工具黨的最愛,也是專業破解者常用的工具之一。常見的修改器除了常見的燒餅、八門神器、葫蘆俠、GG(GameGuardian)以外,還有很多定製修改版。

  其中,GG修改器是做的最專業的修改器,專門做了反檢測措施(隨機化包名、子進程使用系統進程名等),因此常規的進程檢測對GG無效。但是易盾手遊保護採用修改行為檢測,可以通殺所有修改器,包括所有已知和未知的修改器。下圖是檢測效果示例:

  反加速

  加速器可加速可減速,主要分為兩類:一是Android系統內的加速器,如燒餅加速器、叉叉加速器,一般修改器都附帶加速功能;二是對模擬器進程加速的加速器,此加速原理跟端遊加速相同,實質是對整個模擬器做了加速,Android系統內並沒有加速器在運行,比較典型的是天天模擬器附帶的天天加速器。

  加速器的使用會讓個別玩家獲得遊戲優勢,影響遊戲平衡。但是易盾手遊保護對以上這2種加速都有檢測方案,而且是針對行為的檢測方案,不針對特定的某些加速器,通用性更好——對於天天加速器這樣的進程加速器,即使只加速0.1倍也可以檢測到。

  上圖是一個加固過的跑酷遊戲,用天天加速器加速生效後,過了一秒鐘左右,即會閃退。

  反模擬點擊

  模擬點擊嚴格上來說不屬於非法外掛,處於灰色地帶,因此模擬點擊器都是公司化動作,應用很廣泛,但是模擬點擊腳本提供的功能對遊戲平衡也會帶來很大的不良影響。目前比較知名的模擬點擊器,有叉叉助手、觸動精靈、觸摸精靈、按鍵精靈、遊戲蜂窩等。

  如下圖所示,觸動精靈啟動後,再啟動遊戲,保護檢測到模擬點擊器的存在即會閃退:

  但是易盾手遊保護使用了進程+行為檢測相結合的方式,能夠對模擬點擊器進行檢測。

  以上介紹的這些手遊通用保護功能各有其特點,開發者可以按實際需求進行選擇:

  手遊風險感知

  網易易盾還能夠提供手遊風險感知功能,主要包括包含破解包的檢測、跟破解者無感知對抗、惡意用戶風險評估以及支持私有化部署。

  三、易盾保護方案特點

  網易易盾保護方案具有純Native保護、對引擎SO做加殼、兼容性和穩定性高、性能影響小、支持Windows、Linux、Mac三平臺加固等性能特點。

  純Native保護

  遊戲dex內部都是第三方SDK以及遊戲內部不涉及到遊戲邏輯的SDK。如果對DEX加殼的話,一方面容易造成Android碎片化,導致dex加殼會降低app的兼容性;另外Android存在Dalvik和Art兩種虛擬機,所以dex加殼會為了兼容2種虛擬機而增加處理成本,從而導致啟動耗時增加比較厲害。阿里和騰訊都有DEX加殼服務,但是支付寶、微信都沒做DEX加殼。支付寶和微信的安全問題應該是所有APP中間最嚴重的,他們都沒做DEX加殼,這很能說明問題,此外所有騰訊的遊戲都沒有做DEX加殼。所以如果手遊保護需要依賴於DEX加殼的話,兼容性和安全性都是很難保證的。因此建議遊戲不要使用DEX加殼。

  下圖是以一個第三方遊戲為例,使用jeb分析其dex包含的模塊:

  網易易盾可以提供純Native保護,使遊戲保護不依賴DEX加殼。DEX加殼和純Native保護優缺點比較如下:

  對引擎SO做加殼

  基本上所有的破解都依賴於對引擎so的逆向分析,如果對so進行了加殼保護,會大大增加遊戲被破解的門檻。除了對引擎SO加殼,網易易盾還會對敏感函數代碼做校驗。

  兼容性和穩定性高

  兼容強的原理在於所有保護都在SO層,不會對DEX進行修改,有效避免了Android碎片化導致的兼容問題。網易易盾的兼容性極高,可以兼容從Android 2.3到Android 9.0所有版本系統、所有模擬器以及所有遊戲引擎使用的指令集。

  手遊保護的穩定性,需要遵循如下發布流程:

  QA測試:在200臺手機上以及各種模擬器上測試;

  預線上測試:將安全模塊集成到日活1000的APP上線測試2周;

  版本發布:前面2輪都測試穩定後,正式發布;

  線上回歸:先在內部比較小的遊戲上線測試,確保穩定性。

  性能影響小

  易盾保護方案還具有性能影響小的特點,無論是CPU佔用、內存佔用、啟動時間、電量消耗等方面的影響幾乎都可忽略不計。

  支持Windows、Linux、Mac三平臺加固

  此外,易盾保護方案還支持Windows、Linux、Mac三平臺加固,加固工具以jar包形式提供,不僅自帶極速籤名功能,而且對加固做了全面優化,速度更快。

  加固接入的對接過程包括:

  確定遊戲加固項;

  易盾技術支持雲端配置好加固項;

  獲取appkey;

  下載加固jar包工具,根據使用說明配置好appkey。

  四、易盾的解決方案獲得了哪些客戶認可?

  網易易盾保護方案廣泛應用於實際案例中,包括網易公司內部的倩女幽魂、終結者2:審判日等手遊之中。

  在外部,也有遊戲公司多個遊戲皆採用了易盾手遊保護方案。

  最後:易盾還在現場舉辦了安全診斷環節,現場有用戶問及加固的流程。網易客戶全工程師李沛然表示,加固流程上,一條命令行即可接入,不會影響開發流程。

  「使用很便捷。」李沛然強調。

相關焦點

  • 開發者盛宴 2014 Unity亞洲開發者大會盛大開幕
    Unity全球開發者超過300萬,1/4在中國,超過5000家遊戲公司和工作室在使用unity 3D開發。另外,平均每天有26款使用Unity引擎的非遊戲應用在蘋果商店上架。Unity插件在全球4億次下載量,中國已超過1億次下載。
  • Never Too Small to Dream Big —— Unity大賽獨立遊戲開發者張翰...
    Unity大賽有幸對張翰榮進行了採訪,採訪過程有感於這是一個非常真誠的獨立開發者。獨立遊戲是如何「贏在創意,貴在獨立精神」的?獨立遊戲製作人應對市場上的困境如何做出堅持?開發Unity遊戲過程中如何解決效率優化等問題?這位堅持夢想的獨立遊戲製作人為我們娓娓道來。
  • 我們跟Unity聊了聊,如何助力3A遊戲製作
    在手遊開發領域發光發熱,這也導致Unity被慣性的打上了「手遊引擎」標籤。2020年11月16日,中國Unity線上技術大會以在線直播的形式,為廣大 Unity 開發者帶來一系列前沿技術學習和優秀案例品鑑的 「視聽盛宴」。
  • Unite2013開發者大會:Unity新增多項重磅革新
    :1.Unity正式發布2D工具——Unity不再只是Unity 3D 2.Unity正式宣布成立Unity Games——將為移動遊戲發行高質量的遊戲3.Unity 推出Unity Cloud——使開發者更容易地推廣遊戲和並將遊戲商業化Unity正式發布2D工具——Unity不在只是Unity 3DUnity的2D工具旨在解決開發者在使用
  • 工賦開發者社區|工業大數據安全風險與技術應對
    【工賦開發者社區簡介】工賦開發者社區是提供給工業網際網路開發者和技術愛好者認知、交流、深入、實踐的一站式社區,旨在構建全球化的有技術背景的優秀人才同儕學習成長平臺,為開發者提供前沿技術、資源工具、學習實踐、大賽活動、專家社群等,讓開發者暢享技術之美。
  • Unity官方示例:在ARCore和ARKit中實現多人遊戲
    不少遊戲開發者已經用ARKit開發出了很多好玩的遊戲。但是不少開發者都向雷鋒網表示由於ARKit目前還難以支持多人遊戲,大大降低了AR遊戲的社交性和可玩性,也限制了遊戲場景。在Unity Austin 2017中,Unity向大家介紹了如何在Unity中使用ARKit和ARCore,以及如何解決多人遊戲的問題。此文原發於「Unity官方平臺」公眾號,雷鋒網獲授權轉載。
  • 摩羅丹教如何從容應對
    摩羅丹教如何從容應對時間:2020-03-18 17:05   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:胃脹氣打嗝怎麼辦?摩羅丹教如何從容應對 提起打嗝,想必大家都深有體會。打嗝通常與飲食有關,當飲食過快、過飽,飲用很熱或很冷的食物飲料時,都容易出現打嗝,這是常見的生理現象。
  • 遊戲開發者摩拳擦掌,但微信小遊戲真的能與App Store正面競爭嗎?
    昨天的微信小遊戲製造了 2017 年中國網際網路的最後一個高潮,它的出現撩動著無數遊戲開發者的心,但同時更牽動的還有蘋果的心。作為小程序的一個類目,小遊戲同樣做到了即點即玩,無需下載安裝。更吸引遊戲開發者的是:「目前安卓端少量的小遊戲已經支持商品內購」,很多敏感的開發者迅速嗅到了商機。關於微信構建流量閉環、向作業系統靠攏的議論開始紛紛出現。
  • Unity裡asset store下載的遊戲模型Amane kisora-chan用法介紹
    Unity裡內置asset store有很多免費的遊戲模型大家可以下載,下載的時候打開asset store搜索free即可。由日本SapphiArt設計的Amane Kisora-chan排在免費類較前的位置,角色形象比較美觀,有滿足大部分遊戲基本動作種類(等待、走、跑、攻擊、跳躍、受傷等)、簡單的臉部調節功能及動畫。
  • 專訪Unity 大中華區總裁:你所不知道的 Unity
    在與愛範兒的訪談中,Unity 大中華總裁符國新(Allen Foo)闡述了 Unity 獲得巨大成功的原因:2008 年蘋果的 App Store 正式引爆了手機遊戲,面對小型開發團隊的爆發式崛起,Unity 的理想就是,如何更簡單地讓引擎技術滲透到所有的屏幕上。佔領全平臺的 Game Changer近十年來,Unity 憑藉三點改變了遊戲開發的規則。
  • Ohayoo給開發者們寫了一封信,吹響新一年「休閒遊戲」崛起的號角
    Ohayoo過去在休閒遊戲領域的實力,不管是產業還是用戶都有目共睹。自2019年春節,Ohayoo推出《消滅病毒》開始,他們已經成功發行了150款以上的產品,流水過億的爆款有9款,過千萬的有39款。如今邁入2021年,在自己創造出的成績之上,在已經深度耕耘的領域當中,如何再度突破?Ohayoo似乎有了答案。
  • Unity項目開發過程中常見的問題,你遇到過嗎?
    最近看到有朋友問一個unity遊戲開發團隊,需要掌握哪些知識之類的問題。
  • 如何製造一個簡單的2D遊戲?
    前言本文主要介紹的是我在參加學校工作室考核(是的)時開發一個簡單的2D橫板跳躍遊戲時的一些思路和開發記錄,如果你對遊戲開發比較感興趣並且想成為一個遊戲開發者的話,這篇文章或許對你會有一些幫助!如果你是一個遊戲開發者的話歡迎來和我交流:D!
  • 2020,穿山甲要幫遊戲開發者重新定義「變現」
    上述種種,是手遊在獲客與變現上的新趨勢。而在穿山甲看來,利用好廣告是遊戲開發者今後實現破局的一條重要途徑。面對不利的行業環境,他們實現了大幅增長9月16日,葡萄君參加了「穿山甲超級聚星大會」。那麼,在重重挑戰的市場背景之下,穿山甲與他的開發者合作夥伴們是如何實現增量的?其思路在於:既然用戶規模趨於飽和,那就想辦法爭奪更多的存量用戶,並獲得更多的用戶時間。實現途徑可能有兩種。第一,遊戲設計創新;第二,就是穿山甲主張的買量變現端對於產品的高效配合。說白了,就是利用好廣告。
  • 【官方說明】Unity 5 引擎專業版和個人版解析
    Unity 的宗旨是希望大家都能開發遊戲和應用,就某些層面來看我們獲得了很大的成果,甚至讓其他引擎工具也一起共襄盛舉來協助開發者,為了扶持廣大獨立開發者或無法獲取營收的小公司,我們隆重推出新的Unity Personal Edition(個人版)。免費, 我們說的免費意思就是真的免費,不收取任何的分成或授權費用。
  • 手機遊戲如何利用Facebook進行海外推廣
    2014年移動網際網路的戰火已經燃起,併購、借殼、融資、版權等等信息無不演繹著移動網際網路的殘酷競爭,手遊全球化趨勢越發明顯。Facebook作為社交鼻祖,用戶遍布全球,如何利用Facebook進行手遊、App海外推廣已經成為行業關注焦點。那麼開發者如何進行海外推廣?都要注意哪些問題?
  • 騰訊遊戲首度揭秘CROS體系:全球精品手遊背後的研運秘訣
    在GDC2019年度遊戲開發者大會期間,騰訊是少數幾家將公共研發技術呈現於國際舞臺的中國遊戲公司。騰訊遊戲公共研發運營體系CROS(Common R&D and Operation System)在本次GDC大會上首次公開亮相。
  • 巧用Unity 2D功能:只需六步開發簡單的2D UFO遊戲
    無論我們現在可以選擇多少種類繁多的,擁有逼真畫面感的遊戲,2D遊戲始終會在玩家們的心中佔據一席之地,而對於想邁入開發者行列的同學們來說,先嘗試做一款2D遊戲無疑是合適的起點。Unity中的2D功能讓開發此類遊戲更加的便捷,這篇教程將教大家使用Unity 2D功能製作一個非常簡單的UFO遊戲,整個過程只需要6個步驟,適合Unity初學者以及對Unity的2D功能不甚熟悉的開發者們,希望Unity能讓你初嘗遊戲開發的樂趣,為以後的開發之路奠定基礎,你準備好完成這款簡單的2D遊戲了嗎?
  • 谷歌開放地圖 API,助力開發者推出基於地理位置的 AR 遊戲
    IT之家3月15日消息 還記得曾經風靡街頭的Pokemon Go手遊嗎?這款遊戲借著任天堂Pokemon系列遊戲的大眾知名度,配上AR的特性,讓玩家在尋找口袋妖怪的過程中不亦樂乎。Pokemon的地圖映射來自合作方Niantic遊戲公司。
  • unity遊戲製作初始人物控制代碼
    大家好,今天小編帶大家學習一哈unity遊戲製作中初始人物控制代碼。1.我們知道遊戲中,選中人物,在人物未開始運動前,往往會有一個初始的動作,好的,我們這節課通過unity中相關代碼和基礎設置來實現這一效果。