加固是保護App安全的重要手段之一,不僅能夠保障App程式碼安全,防止被破解入侵篡改,更是等保、測試等合規性要求。
最近,公司開發了一款運動App,主要面向蘋果使用者。我試遍了市場主流的iOS加固產品。雖然國內外的都有,但是差距很大。當然,能夠拿出來單獨說的不超過6款。以下是iOS App加固產品選型時的一點心得,主要有Obfuscator-LLVM、網易iOS加固、360iOS加固、頂象iOS加固和數字遁甲iOS加固。
Obfuscator-LLVM
Obfuscator-LLVM是瑞士西北應用科技大學安全實驗室於2010年6月份發起的一個專案,該專案旨在提供一套開源的針對LLVM的程式碼混淆工具,以增加對逆向工程的難度。後期轉向商業專案strong.protect。目前,OLLVM已經支援LLVM-4.0版本。
作為程式碼混淆的優秀開源專案,Obfuscator-LLVM提供控制流扁平化、指令替換、虛假控制流等功能,不支援swift和Bitcode,加固強度比較低。

Obfuscator-LLVM使用時必須整合到xcode上,也就是外掛形式進行加固,開發除錯很簡單。
Obfuscator-LLVM的混淆樣式如下:

網易iOS加固
iOS加固(dun.163.com/product/ios… 是網易易盾下面的一個移動安全產品。主要提供字串加密、程式碼邏輯混淆、字串混淆和反除錯等功能,也不支援swift和Bitcode,加固強度中等。

網易iOS加固是一套獨立工具,開發除錯程度一般。
它提供了15天的企業免費試用。需要提供bundleID和郵箱。
使用過程如下:

360iOS加固
360iOS加固(jiagu.360.cn/#/global/in… 是360加固保旗下的產品。主要提供原始碼進行常量加密、邏輯混淆、結構替換、多路徑執行等保護,同樣也不支援swift和Bitcode,加固強度中等。

360iOS加固是線上加固的形式。在官網註冊賬號,上傳檔案即可使用。 開發除錯程度比較麻煩。

數字遁甲iOS加固
數字遁甲是新崛起的一個加固廠商。其iOS加固產品主要提供二進位制加固、字串混淆和高階反除錯等功能,不支援swift和Bitcode,加固強度較低。


以下是一個加固後的結果。

頂象iOS加固
頂象iOS加固(www.dingxiang-inc.com/business/io… 是頂象技術端安全旗下產品,主要提供程式碼虛擬化、字串加密、程式碼混淆等功能。支援swift和Bitcode兩種(這也是目前唯一支援該兩類語言加固的工具),加固強度較高。
多說一句,該產品團隊人員主要來自阿里巴巴移動安全產品團隊。

頂象iOS加固比較有意思,提供兩種線上和外掛兩種形式。
線上新增參加,然後直接上傳檔案即可使用。

為了檔案上傳方便,頂象還做了一個輔助工具,用來提取加固需要的檔案和合並檔案。

第二種方式是外掛,與Obfuscator-LLVM類似,也是到xcode上。 使用流程如下:


五款iOS加固工具比較

寫在最後的總結
1、功能。這幾款工具都具備了市面上目前常見的字串加密、程式碼和符號混淆、程式碼混亂等基礎功能。其中,網易iOS加固和數字遁甲iOS加固還提供了防除錯功能,開啟後自動注入防除錯程式碼,省去了手寫;而頂象iOS加固整合了程式碼虛擬化功能,開啟後會使函式體消失,進入虛機執行,整體加固效果較佳。
2、操作。Obfuscator-LLVM整合到新版xcode(9.4.1)上,操作比較麻煩。網易iOS加固單獨工具操作比較簡單,但是不能整合到xcode使用;360加固和數字遁甲iOS加固是線上服務,也比較簡單;頂象iOS加固既可以線上使用,也可以整合到xcode上,可謂兩不誤。
3、語言支援。swift是蘋果2014年釋出一個新程式語言,bitcode是編譯的中間語言,都是比較常用的。但是除了頂象iOS加固外,其他均不支援。
4、配置方式。Obfuscator-LLVM、網易iOS加固、頂象iOS加固的配置方式類似。
5、版本更新。Obfuscator-LLVM是全部免費的,但是已經停止了更新。其他產品都有更新。
6、加固檔案。頂象iOS加固線上使用時,不需要上傳原始碼,這與其他幾個線上加固的產品不同。