如何做好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首次推出面向移動遊戲的診斷室服務,搭配現場分享答疑,切實降低遊戲開發者的破解外掛風險。有不少參與者稱贊易盾的同學有俠之精神——因為幫助他們解決了不少實際問題。
如何做好iOS應用安全?這有一把行之有效的“三板斧”