輕量級加固安全不打折 數字盾甲iOS應用加固技術“守正出奇”
原創【51CTO.com原創稿件】依托智能手機規模化應用,促使移動互聯網得到長足的發展,進而各種功能豐富的APP走進我們的生活,帶來便捷的同時,App加固也成為剛需。有效的加固,可避免被破解、盜版、二次打包、注入、反編譯等風險,提升App的安全性、穩定性。當下,仍有人覺得iOS代碼不用做加固,是因為蘋果系統的封閉性導致iOS系統下的 App安全性相對較高。但是實際上iOS應用本身被破解的難度并不高,不管個人開發者還是大廠皆有保護代碼安全的需求。
近日,數字聯盟iOS加固技術產品團隊接受了51CTO的專訪,整個過程圍繞應用加固技術的演變、業界常用iOS應用加固方法的不足及采用二進制研發的iOS應用加固產品“數字盾甲”展開。
應用加固技術的演變
應用加固技術并不是新興技術,在移動互聯網興起前就已經存在,主要作用是防止PC端應用被破解或盜取。軟件開發商為了保護版權,會選擇各種方式,保護自己的軟件。密鑰常見的應用加固技術,起初僅由軟件承載,后續又與硬相件結合,進行校驗和認證,旨在增強加固力度。
隨著智能手機滲透、安卓系統日益趨近成熟,App開發大軍也逐漸龐大起來,主要分為兩大流派:iOS系統 和Android系統,分別對應 .ipa 和 .apk文件格式。XcodeGhost事件發生后,人們開始對App的安全倍加重視。從開發角度來說,源代碼安全問題是基于代碼審計層次而決定的;從軟件保護角度來說,解決App的安全問題則是對源代碼的代碼混淆、資源加密和邏輯加固等;從用戶角度說,那就是App本身的安全性,是否會對個人隱私財產造成損失,是否是值得信賴的第三方平臺。
安卓端應用批量涌現,對應的加固技術也如雨后春筍隨之而生。出現這樣的現象主要有兩個原因,其一:龐大的用戶群體。其二:編程手段過于上層。也就是安卓端興起之前,軟件破解通常使用C2、C++等編譯性語言,得到二進制的結果后,造假分子去破解應用的難度相對較大。安卓端最初就選擇Java語言做上層應用的開發,Java語言擁有標準化、高透明度的特點,所以安全性自然就會相對下降。造假者很容易便可了解到應用開發者的自檢碼、虛擬機等規范,破解難度較低。
安卓領域的加固技術經歷關鍵的幾次迭代:
- 改變原始代碼,躲避初級分析;
- 在內存中加載代碼;
- 創建虛擬的CPU或虛擬機,把標準官方指令,變成開發者自己私有化的指令,進而增加造假者分析和造假的難度。
業界常見iOS應用加固技術的不足
用戶對App技術的核心訴求是無論采用何種手段,只要保證在不影響產品功能的前提下,提高被分析和調試難度即可。
張宇平·數字聯盟CTO
數字聯盟CTO張宇平表示,安卓端的加固市場經過多年的演變已經趨近成熟,但市面上還缺乏有效的iOS應用加固技術。在推廣數字聯盟反作弊技術產品“可信ID”的過程中發現,很多客戶也有iOS應用加固的需求。
那么,傳統的iOS應用加固技術有哪些不足呢?傳統的iOS應用加固方式一般是通過編譯器混淆程序代碼,將有效信息淹沒到各種無效信息中,干擾造假分析人員的視線。但加密方式大幅度增加代碼體積的同時,還需要將應用的代碼提供給第三方加固機構,再借助編譯器去做混淆。對于客戶而言,需要承擔源代碼泄露的風險。在加密/隱藏/混淆程序代碼的過程中,應用包如果過大,會影響用戶體驗和下載意愿。
數字盾甲iOS應用加固技術“守正出奇”
目前看來,移動端的加固技術基本和PC端的發展軌跡雷同,從Windows平臺加殼脫殼、反調試和反反調試到Andriod平臺.apk加固、反調試代碼混淆和加強殼。Windows平臺下,ring3到ring0層的反調試技術已經非常成熟。相對于.ipa加固,.apk加固做的相對較好,業界已經有很多成型的App加固方案。
數字盾甲iOS應用加固技術“守正出奇”,沿用了PC端高難度的二進制加固技術的同時,給iOS應用加殼,既避免應用被盜版的風險,也防止黑客反編譯進而保護核心業務邏輯。此項技術還融入了高級反調試和字符串混淆等技術,進一步保護應用不被調試器分析,防止 IDA Pro 等工具通過關鍵字定位破解核心代碼邏輯。
據悉,使用數字盾甲 iOS應用加固技術后,原始App體積增加量不會超過1M,加固力度不會受到影響,可謂是“輕量級加固安全不打折”。對這項技術的需求主要體現在付費應用、企業應用、內有交易功能的應用和注重知識產權,以及珍視自己心血的各類中小開發者所開發的應用上。
當問及數字聯盟 iOS加固技術未來的突破方向,數字盾甲iOS應用加固技術團隊表示,將在代碼虛擬化和其他資源(圖片/聲音)保護等方面做進一步研發。目前,數字聯盟的App加固技術還沒有應用于安卓平臺,主要是因為安卓平臺過于復雜,系統版本多、設備種類多。核心技術完備的情況下,兼容性方面也需要花費大量的時間去進行適配,安卓平臺會稍晚上線。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】