天天看點

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力
根據國家網際網路金融風險分析技術平台監測資料顯示:截至 2020 年 5 月底,共發現 2801 個網際網路金融仿冒 App ,仿冒 App 下載下傳量高達 3343.7 萬次。

“李逵”和“李鬼”

網際網路環境下,盜用和剽竊能有多簡單?

先看一波新聞标題感受下:

  • 《北鬥衛星導航系統全球免費,卻因山寨app收費20元連中國人都誤會》
  • 《500萬人用山寨12123查違章?高仿APP不隻是坑錢》
  • 《關注:小米金融被騙子盯上遭假冒,真假難辨山寨APP要警惕!》
  • ……

伴随着移動應用數量的井噴式增長,對于一個 App 來說,被山寨和盜版無疑成為了每一個應用開發者最頭疼與煩惱的問題之一。

移動端黑産日益壯大,伴随而來的逆向攻擊手段也越來越高明,基于 java 開發的 Android 應用因其語言的特性和系統的開源屬性,大量 Android 應用程式面臨着應用程式遭逆襲破解、知識産權被侵犯、被二次打包簽名等安全問題。

為解決上述問題,在 APK 上傳至應用市場之前,需要先對 APK 進行加強并對加強後的 APK 進行相容性測試,可最大限度保障應用不被破解。

加強技術的演進與優化

傳統加強

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

第一代加強技術采用的是Dex加密存儲,解密時落地;落地之後通過自定義的DexClassLoader将解密出的Dex加載到記憶體中,然後程式運作該檔案(Dex是APK的Java代碼經過編譯後生成的檔案,可以簡單了解為Java的邏輯)。

其脫殼方式很簡單:因為Dex加密是整體進行的,解密時還會落地。可以通過HOOK檔案操作(Read、Write、Delete)将Dex檔案脫殼出來,通過反編譯工具分析,進而得到APP的核心邏輯。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

之後對第一代版本進行了更新,與未更新版相比:Dex加密存儲方式相同,但解密時不落地;解密之後在記憶體中通過自定義DexClassLoader進行加載。更新版本的脫殼方法也比較簡單,主要采用記憶體Dump方法,将檔案寫到磁盤中,通過HOOK dvmDexFilePartial的方式達到脫殼目的。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

第二代加強方式采用的是Dex Method方法抽離,Dex在記憶體中加載時不連續。其原理是:Method方法通過一些加強方法抽離,APK在運作時,整個Dex會一并修複,然後在記憶體中運作,也就說在記憶體中有着完整的Dex代碼。第三代方式與第二代相比同樣是采用Dex Method方法抽離,但Dex執行中動态解密。兩者的差異在于:後者在APK運作時,Dex檔案是不進行修複的,而是等到Class被執行時才進行解密。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

對第二代和第三代進行脫殼前,需要先了解Dex結構。Dex結構從dex_header開始,在頭部存在Dex的标志位;然後逐漸按結構指向Method結構體,Method結構中的code_off字段最終指向可執行代碼。是以在第二代和第三代的脫殼過程中,需要HOOK DVM虛拟機中很底層的函數,進而拿到需要執行的APK的類,進而得知Class object全部方法;然後在記憶體中對DEX進行重建,重建之後再将其Dump到本地,得到脫殼之後的Dex檔案,便于後續采用工具分析。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

除了上述的脫殼方式之外,通用的脫殼機(開源的Zjdroid、DexHunter)也可以輕松脫掉大部分殼;并且,由于傳統的加強方式容易被脫殼,導緻目前脫殼類教程非常之多。是以,傳統的加強方式面臨着很大的挑戰。

全量混淆

針對層出不窮的脫殼方式。阿裡内部經過多次讨論後,認為傳統的加強方式已過時,需要轉變思路:混淆。

ProGuard混淆

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

在APP釋出前,通常會對應用進行ProGuard混淆,類似上圖的配置。圖中的proguard-android.txt/proguard-rules.pro是ProGuard的混淆規則。在Java中,某些特性如反射調用以及可序列化類等是需要保留的,是以需要人工配置一些複雜的規則。當規則全部配置成功後,對APK進行反編譯,從上圖可以看到某些邏輯被混淆成了a、b、c等,進而大大增加了黑客逆向分析的難度。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

通過混淆可以增加逆向分析的難度,但并不代表着不能分析。上圖是對金山隐私保險箱逆向分析的案例,通過反編譯工具分析,得知金山隐私保險箱對其核心代碼進行了混淆,例如它的類名是a、b、c等形式。由于ProGuard混淆時需要配置很多規則,很多開發人員為了保障相容性會保持很多類,導緻APK内的邏輯并不全部混淆,進而導緻安全性的降低,通常ProGuard混淆率在10%-30%。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

為了解決ProGuard混淆需要配置很多規則導緻混淆效率低下的問題,阿裡内部研發了全量混淆技術。上圖左側是手淘在未混淆之前的反編譯情況,其中的類、函數名都是一目了然的;經過全量混淆之後的效果圖如右側所示:類名全部變成了a、b、c的類型,并且全量混淆幾乎是不用任何配置的,大大降低了使用成本。目前,全量混淆已線上上對外釋出。

優化瘦身

随着APK功能的增加,其體積也在不斷地增大,例如手淘、支付寶等應用達到五十幾兆、遊戲類的APK達到幾百甚至上千兆,進而引發了手機資源存儲、使用者下載下傳流量浪費等問題。是以APK優化瘦身勢在必行。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

APK優化瘦身的實作邏輯主要包括:首先,清除Dex檔案Debug資訊,減少編譯器自動産生函數,優化性能,減少體積;其次,通過Java層攔截技術,對SO進行重新打包壓縮,減少體積;同時,修改Android應用資源名稱,通常資源名稱是帶有實際意義的,通過将帶有實際意義的長檔案名修改成上文所示的a、b、c等形式既減少應用體積,又提高了資源保護強度;此外,通過自行開發的7z工具,對簽名後的APK包重新壓縮,達到進一步減少體積的目的。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

上圖是阿裡内部應用優化瘦身之後對比效果圖,從圖中可以看到手淘、支付寶、釘釘瘦身前後的對比,瘦身效果可以達到10%左右。

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

上圖是市場上常見應用瘦身前後的對照表,微網誌、百度地圖等應用優化後的減少百分比可達到百分之十幾;華為賬号等應用優化瘦身減少率甚至達到40+%。通常應用優化瘦身減少率在15%-20%,具體數值和APK的開發品質有關。

開發不易,阿裡”固“你

針對市面上移動應用普遍存在的破解、篡改、盜版、釣⻥欺詐、記憶體調試、資料竊取等各類安全風險,mPaaS 「移動安全加強」依賴于阿裡雲集團的移動安全加強技術,經曆了淘系等億級應用的安全性考驗。

能夠有效為移動應用提供穩定、簡單、有效的安全保護,提高 App 的整體安全水準,力保應用不被逆向破解,在安全性上具有非常可靠的保障。

基本原理

「移動安全加強」通過對 Android 應用重新編譯、加殼保護、修改其指令調用順序等手段來增強應用的反破解能力。在加強過程中,注重加強強度與相容性并重,避免一般加強功能由于盲目追求加強強度而導緻加強後應用完全不可用的問題。

産品優勢

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

3 核心能力

① App 自身安全保護

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

② 深度安全檢測

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力
✨點選此處立即接入✨

如有更多接入相關問題

歡迎使用釘釘掃碼或搜尋33417739入群交流

辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力
辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力
mPaaS 移動安全加強正式公測上線:公有雲限時免費體驗
辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力
辛苦開發的 App 被山寨?mPaaS 幫你為 APK 上把加強鎖“李逵”和“李鬼”加強技術的演進與優化開發不易,阿裡”固“你3 核心能力

關注公衆号「mPaaS」,回複“安全加強”,擷取《APP加強新方向——混淆和瘦身》完整講義

繼續閱讀