防山寨、防盜版、防黑客的六大策略

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統

         一、本文談及的安全措施僅在你的游戲進入應用市場前予以執行方能奏效。這一點非常重要,下文會詳述這個問題。

  二、本文不能保證一勞永逸,特別是鑒于移動平臺的快速發展,以及許多人都希望通過復制或在你的游戲中作弊撈取利益。

  三、這些解決方案的主要目的并不在于創造不可逾越的障礙,而是減緩和打壓黑客的囂張氣焰。所以突破應用安全系統的耗時越長,你的游戲在黑客面前的吸引力則更低。




以下是防山寨、防盜版、防黑客的六大具體策略

  I. 存檔作弊防止機制

  例如,《憤怒的小鳥》的存檔破解工具能讀取和改變游戲的進度值。

  免費游戲通過內購進行盈利。內購的道具能夠幫助玩家輕松繞開游戲設定的障礙和在游戲中的表現更為優異。存檔破解能夠區分儲存和這些道具值的存放文件,并對它們進行修改,或讓作弊者采用相同的方法獲取無限金幣/現金。以后就是這些作弊工具的原理:

  在大部分游戲中,當玩家執行某個行動,該行動的記錄以及結果都會儲存在本地文檔(即移動設備中),并在上傳至服務器前進行打包。由于一次性上傳所有文件會嚴重阻礙網速和損害游戲體驗,所以這些文檔會進行分批上傳。作弊工具就是在打包上傳節點上獲得作弊的機會,并對該等文件依附外部存檔修改工具,以獲取應用的存檔,所以作弊者能夠修改游戲的行動,包括獲取游戲的付費道具。(這些存檔作弊工具中有一些能夠在游戲是否已經被反編譯的情況下仍能起效,所以創建或使用第三方解決方案顯得非常重要)。

  檢測和組織任何外部存檔修改的努力能夠幫助預防這類作弊方式的發生。如果開發者對自己的創建存檔作弊檢測/防止措施有信心,那么也可以進行自主開發。反之,則在游戲中納入商用解決方案。我的個人建議是進行全面的調研和選擇一項商用解決方案。存檔作弊程序在不斷的發展和改善,而商用服務較普通游戲開發者在這方面更有資源。

  預計執行時間:這取決于解決方案是否通過二進制植入(耗時幾分鐘)、SDK(耗時數天乃至數周),或自主開發(數周乃至數月)。

  2. 源代碼和字符代碼混淆

  普通英文文本形式的源代碼非常容易理解,但當以字符和數字代替文本時則不然。混淆式代碼能夠減慢黑客了解代碼的速度,更不用說利用你的代碼。

  預計執行時間:數分鐘乃至數小時,取決于代碼的復雜程度。例如,Second Wave Games工作室喜歡采用由谷歌提供的免費混淆代碼/打包代碼。通讀整個文檔以及相關的棧溢出(StackOverflow)僅需一小時,而執行這種代碼也只需花一小時。

  3. 二進制級別的代碼混淆和加密

  如果將源代碼混淆比作為你的臥室上鎖了的保險箱,二進制級代碼混淆則相當于鎖上你的前面和在你的房子安放防盜門,給盜賊設置多一層困難。由于這對應用本身的內容并無傷害,因此該方法不會對應用的體驗構成任何影響。

  這種方法能夠很好地防止反向工程,因為反向工程需要對二進制文件進行反編譯,但很不幸,這是普通黑客的懂得技術之一。

  源代碼能被輕易地復制,從而創造新的游戲。而OniixGames工作室(在波士頓和上海設點)卻對此無能為力:“在一款我們近期發布的游戲中,我們遇到了一款在實質上反向變異了我們合作伙伴產品的游戲,還在我們合作伙伴的游戲全球發布一個月后成功登陸了應用商店。代碼混淆和加密二進制文件則能防止這些情況的發生。”Oniix的Evrett Wallace如是說。

  預計執行時間:取決于采用何種解決方案。方案植入可能會耗時數月(對于需要與應用的初始開發進行深度融合的解決方案而言),采用SDK則需2-3周的時間。新近推出的解決方案能夠將此耗時縮短至數分鐘。例如近期我協助測試的一份樣本文件上傳/下載,以及整個流程僅需10分鐘則可完成。

  4. 加密密鑰使用動態密鑰而非靜態密鑰

  我們發現使用靜態和硬編碼密鑰的游戲非常多。而且這還不止局限于小型開發者。一些主流發行商的游戲和應用,以及一些知名的企業也在其游戲中采用單點登錄的方式。

  不論你是否用于加密在設備上通信或儲存的數據,對它們執行硬編碼,這就意味著加密無法輕易地被破譯。

  試想一下:大街上的車都不是一條鑰匙即可打開,就如你不應該在所有網站的賬戶上只使用單個密碼。或許更重要的是,你絕不能夠讓這個密鑰或密碼可供其他人使用或復制。

  加密密鑰是保護互聯網服務的基石,但必須使用得當。在可能的情況下,使用動態密鑰,如果你得使用靜態密鑰,確保你加密。

  預計執行時間:數小時乃至數周,取決于你的游戲的開發周期,以及需要處理的密鑰的數量。

  5. 實施支付驗證

  在內購進行時,應用商店便會發放一個支付驗證碼。在游戲服務器追回內購并返還至應用商店的服務器予以確認前,付費驗證碼可被重復多次使用,有時候還能夠在不同的應用中使用。

  由于銀行的規定以及信用卡在票據交換所處理的方式,有時候會即時產生信用卡收費。而在其他時候,則會在一天或兩天后才會完成費用“待處理”至“處理”整個流程。(驗證有時候批量處理并每個數小時一次,或一天一次)。例如,Uber實施處理信用卡的支付,而Lyfy的處理時間卻為24小時。這就給使用虛假信用卡,以及被盜信用卡進行內購有機可乘。

  這種黑客現象非常廣泛。移動分析公司Appsalar報告稱,“越獄設備的舞弊比例超過50%”。游戲平臺開發者SOOMLA近期描述了內購舞弊的發生過程,并以其中一個客戶(一家游戲開發者公司)為例,該公司本來在首天后應賺取超過1,000美元,但隨后蘋果的收入報告顯示,該公司實際只賺了1-2美元。

  通過在服務器端執行實時支付驗證,你可以防止對支付驗證碼的濫用,并減少使用無效信用卡信息的舞弊情況。

  預計執行時間:最多耗時數小時或數天。一旦你了解內購系統的運作模式,執行實時支付驗證并不困難。在植入內購系統時,確保你的服務器收到購買請求時及時執行服務器端的檢查。

  6. 實時監控應用安全

  門上鎖了就安全了。有門的建筑更為安全。就更為有效的動態監測系統而言,在建筑被入侵前,向戶主發出檢測潛在威脅的警告非常關鍵。而應用分析工具的新興領域似乎能讓這種系統成為可能,讓開發者可以跟蹤他們的應用,檢測潛在的黑客現象,并追蹤他們的頻率和始發點。盡管目前市面上的關于這方面的服務尚較為稀缺,但它們仍值得調查和考慮。

  服務器端的保護應加入防火墻和服務器安全軟件;通信應采用SSL和其他更為安全的方法。現在我們應該在應用的客戶端上采用相同的邏輯。盡管敏感數據儲存于客戶端,但黑客仍可通過客戶端獲取這些數據。回到我們剛剛的類比當中,通過密鑰進入的系統是安全的,但如果配備指紋識別、熱量探測和數字鎖并配備監控攝像頭的系統則更為安全。

  預計執行時間:市面上有多個解決方案,執行時間從數分鐘至數周不等。實時監控要求持續的監控。有鑒于此,我認為應該在客戶服務/游戲端加入這種服務,因為其他平臺,包括MMORPG,也采用了這種跟蹤功能。

  

P.S. 為什么游戲發行后的解決方案代價更高

  正如本文開頭所說的,這些安全政策只有在應用進入市場前方能奏效。這點非常重要。我再次重申:如果你嘗試對已經進入應用商店的應用施加保護,那么恐怕已經是亡羊補牢,為時已晚。一旦游戲已經發布,這需要數周的開發時間對游戲的代碼進行修改。

  而在這段時間,黑客可能已經完成了他們需要做的工作了。盜版游戲甚至能在原版游戲進入某個區域前便進行發布。在中國(Google Play被禁),市面上有數百個安卓的應用商店,開發者有時候會發現他們與自己的多個克隆游戲進行競爭。所以,要在開發周期的初期階段便開始執行安全措施。

  我明白這可能與手游,特別是免費游戲的一般開發方法背道而馳。手游是持續更新和優化的產品。就此,大部分的游戲初始發布時都是MVP(可行性最低的產品)版本,并在隨后的時間進行迭代。受到開發時間的限制,開發者需要與時間競賽,甚至他們還會面臨是加入所有計劃的功能或是按期發行的選擇。在這種情況下,安全通常都不受待見。

  不幸的是,盜版仍相當猖獗。手游行業產值數十億美元,甚至一款游戲的年收入便能達到十億美元,而且手游還在高速發展。考慮到涉及如此龐大的經濟利益,花上幾個小時或是幾天執行安全防御措施是必須的。

來源:手游那點事


上方網 2015-08-23 08:55:12

[新一篇] 游戲開發中 UI 是由誰來完成的?

[舊一篇] 如何隱藏自己的程序猿氣息
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表