用資料告訴你:SDK加固為什麼應該選擇網易易盾

網易易盾發表於2019-11-23

​​在《為什麼SDK加固會那麼重要?網易易盾專家的四點解讀》中,我們介紹了SDK加固的重要性以及易盾SDK加固的2種方案的基本實現原理。作為姊妹篇,這篇文章將為大家解讀下易盾SDK加固的特點與優勢,以及和某友商的對比測評。


一、易盾SDK加固有什麼特點?


對於接入者而言,一個SDK或通用框架的易用性、穩定性、相容性、效能是非常重要的指標,而對於安全加固而言加固強度與加固體積又是非常重要的因素,因此我們將從接入的易用性,加固強度、穩定性、效能、加固後體積等核心指標上進行分析。
易用性
易盾SDK加固後直接替換加固前SDK即可,整合後無需做初始化,就像使用未加固前的SDK一樣,對接入者完全透明。這一點在自動化構建上將非常方便(後文將具體講),因此在易用性上易盾SDK加固對開發者是非常友好的。
加固強度
易盾SDK加固方案包含VMP以及Java2C兩種方案。VMP方案將待保護類的方法進行抽空,對抽取的指令進行加密處理,在執行時透過自定義虛擬機器執行,同時對指令操作碼做了重新對映,極大的提高了分析破解的難度。
Java2C方案將待保護類的方案進行Native化,Java層原函式邏輯轉為了JNI層的C/C++程式碼實現,由於該過程不可逆,因此從Native層還原回原Java層邏輯的門檻與難度會大大增加,幾乎不可能。
穩定性與相容性
易盾SDK加固VMP與Java2C方案,不僅應用在SDK加固業務,在Apk加固也早已應用多時,經受過大量的真機測試與線上環境的考驗。這兩種方案對對市面上Top 100的應用透過雲真主機的百臺測試機進行測試,透過率達到99.6%以上,遠遠超出資質要求的90%的標準。對於安卓的作業系統從4.x到10.x版本均可全面相容,適配的範圍廣。從各類的應用中挑出一個代表性的進行測試,測試的透過率如下所示: 

用資料告訴你:SDK加固為什麼應該選擇網易易盾

另一方面在客戶對接中,我們也遇到過一些先試用友商SDK加固,但執行測試時出現崩潰轉而試用易盾SDK加固的客戶,試用後未出現穩定性和相容性問題。
效能
對於絕大部分場景,SDK加固的VMP方案的效能足以滿足使用者需求。在少數對效能要求比較高的場景,比如影像繪製,涉及到View與UI狀態的實時更新,如果每一幀繪製效能都有所降低,最終可能會造成使用者視覺上的卡頓。對於這種場景,可以使用Java2C方案進行SDK加固。另一方面,對於某些對效能影響很大但不是很重要的類,也可以透過加類名單過濾的方式過濾掉。
因此在效能方面,易盾SDK加固完全可以覆蓋滿足使用者的各種業務場景。
加固後體積
由於SDK的特殊性,SDK作為一個獨立元件,將最終被開發者的使用者整合,而SDK相對Apk而言一般體積較小,同樣的增量對於SDK而言,使用者增量感知上是比較明顯的,因此SDK加固後體積增量是一個非常重要的指標。
實際上在對接客戶過程中,我們瞭解到某些客戶對於SDK加固後的體積,的確是非常在意的,因此我們在體積增量控制這方面也做了很多最佳化。

用資料告訴你:SDK加固為什麼應該選擇網易易盾

部分客戶加固前後體積對比資料

透過上表客戶的資料可以看到易盾SDK加固前後體積增量非常小,即使so包含主流的5種abi,體積增量也基本不會超過800kb;另一方面,因為VMP方案會將Java層程式碼指令抽空,然後加密壓縮,因此SDK加固後的體積不會隨著AAR本身的體積增大,而導致增量越來越大,甚至在某些情況下可能會略有減少。


二、測評


以下測評來自使用易盾SDK加固服務的某客戶給的原始包,以及友商加固包。該客戶原始包為4830kb的aar包,該aar包含java程式碼以及so,其jni目錄只包含一個armeabi架構的so。

用資料告訴你:SDK加固為什麼應該選擇網易易盾

從上表可以看出:

  • 在接入便捷性上:易盾SDK加固完勝,無需初始化意味著對原開發者而言無程式碼侵入性,使用上就像使用未加固SDK一樣,僅需替換加固前SDK即可,這一點在自動化構建流程中優勢明顯。例如:我們某客戶使用多AAR模式,要加固的AAR共有十多個,AAR的加固、接入、編譯、打包合併到最終APK的所有流程,都是透過指令碼自動完成。如果需要開發者主動在Application中做初始化的話,那麼在接入以及編譯環節,就需要開發者寫程式碼透過位元組碼注入的手段,修改接入者原始Application程式碼邏輯,以便實現流程的自動化構建。如果同時整合的AAR比較多,這些位元組碼注入工作量會比較大,給接入者增加額外的非業務邏輯程式碼編寫工作量。而易盾SDK加固無需初始化,意味著只需透過指令碼替換加固前AAR即可做到加固、編譯、打包的自動化構。
  • 在強度方面:目前業界各廠商基本都是使用的第三代VMP保護或最新的類Java2C方案,在強度上基本都相當。
  • 在穩定性方面:雖然在客戶對接過程中,遇到2個客戶是先試用友商SDK加固執行崩潰,轉而試用易盾SDK加固。但由於穩定性是最基本指標,基本上各廠商都會進行大量的真機測試與雲真機相容性測試,達到一定資料標準後再對外推出自己的相應服務,所以基本上該指標各廠商差異不會非常大,可以認為基本相當。
  • 在加固後體積增量方面:易盾增量為151kb,友商增量為1171kb,易盾加固後體積增量只佔友商的13%不到,優勢明顯。


另外易盾SDK加固在客戶對接過程中,也積累了一些真實場景下與友商相比的差異化方案,比如多AAR模式,易盾SDK加固支援多個AAR加固後隨意搭配,更加靈活,同時這些多個AAR同時整合也無需初始化操作。


最後,歡迎大家點選免費體驗網易易盾SDK加固安全解決方案。
​​​​

相關文章