iOS應用面臨很多破解問題,常見的有IAP內購破解、山寨版本、破解版本等;大眾應用上,微信搶紅包、微信多開等;而在iOS遊戲上,越來越氾濫的外掛問題也不斷困擾著遊戲廠商。
網易雲易盾資深安全開發工程師王桂林
3月17日,Cocoa社群CVP系列開發者沙龍在北京舉辦,網易雲易盾資深安全開發工程師王桂林出席沙龍,並做《iOS遊戲的破解以及防護》的演講,分享了究竟該如何做好App的安全防護工作。
攻防,首先得知道他們是怎麼破的
要想防護的好,必須要知道對手是怎麼破解的,王桂林首先分享了兩個破解分析例項。
遊戲加速分析過程
第一個例項就是加速器,“加速器原理都差不多,只是實現方式不一樣。”王桂林說,它們的原理都是透過修改時間相關函式實現加減速功能,實現方式上主要是兩大類,一類是U3D,另外一類是COCOS。如何做的呢?“透過有無UnityAppController來判斷是否為Unity遊戲。如果為Unity遊戲的話,就會用Hook OC的方法;如果不是Unity遊戲,就會採用常規的Hook Gettimeofday方式修改遊戲。”
修改引數
破解效果
只要是手遊,基本都被外掛侵害,《旅行青蛙》是當下非常火的佛系遊戲,網易雲易盾資深安全開發工程師於是就對它進行了分析:透過iOS和安裝安裝包聯合分析,就可以發現iOS使用的是IL2CPP模式,C#指令碼轉成C/C++程式碼,使用II2CppDumper還原符號。王桂林說:“知道這些開發情況後,就可以搜尋三葉草、抽獎券程式碼,透過修改對應的程式碼達到三葉草數目無限、抽獎券變成自己想要的效果等。”
不論是加速器,還是外掛,都會傷害正常玩家——包括付費玩家,同時也會影響遊戲開發者的收入,面對這些情況時,我們該怎麼辦?
iOS遊戲安全,行之有效的“三板斧”
那iOS遊戲怎麼才能做好相應的保護?面對現場大家期盼的眼神,王桂林分享了網易雲易盾行之有效的“三板斧”:
· 第一板斧是防靜態分析,這裡包括字串加密、符號混淆、程式碼邏輯混淆和遊戲存檔加密;
· 第二板斧是防動態除錯、反除錯和通訊安全(資料加密);
· 第三板斧是外掛檢測、加速掛、記憶體修改掛和自動任務掛等。
字串加密
程式碼邏輯混淆
具體來看字串加密、符號混淆、程式碼邏輯混淆。字串加密,就是在編譯器編譯原始碼時,對程式中的字串進行加密,執行的時候動態解密;符號混淆,則是將程式碼中使用的類名、方法名、屬性替換成其他意義的名字;程式碼邏輯混淆,就是在編譯器編譯原始碼時,對程式碼結構進行變形,提高程式碼的複雜度和逆向分析難度,從而保護程式不被輕易破解,裡面也可以加密演算法邏輯和特定的驗證邏輯,比如一開始的程式碼結構很簡單,改了以後就會變得很複雜。
反除錯
王桂林說,上面的都屬於放靜態分析範疇,它都是對變數進行加密保護,讓破解者無法搜尋。外掛都會有反除錯分析,因此靜態分析之外還有防動態除錯,比如說反除錯,它使應用無法被除錯、避免被動態分析的風險;同時,易盾還會做通訊資料加密,防止被抓包工具抓包分析。
做好上面防護之外,易盾也採取主動出擊,做外掛檢測、加速掛、記憶體修改掛和自動任務掛等。
“這就是網易雲易盾行之有效的三板斧——從防靜態分析到防動態除錯到最後的外掛識別,全方位保護iOS應用和遊戲安全。”王桂林最後說。
“移動安全診斷室”活動
今天的北京,外面大雪紛飛,室內熱情似火。易盾聯合Cocos首次推出面向移動遊戲的診斷室服務,搭配現場分享答疑,切實降低遊戲開發者的破解外掛風險。有不少參與者稱讚易盾的同學有俠之精神——因為幫助他們解決了不少實際問題。