Android HotPatch 技術研究總結

本次HotPatch的研究主要基於一片文章:《Android-HotPatch在線熱補丁方案》和一個實踐,手機淘寶HotPatch項目。git

特性(Features):github

     不用安裝,直接修改當前APK的邏輯。安全

缺陷(Defect):服務器

    1,沒法更改程序版本號碼。app

    2,每次程序啓動,都須要載入Patch。不能真正修改原始APK。框架

侷限(Confine):函數

    平臺: API Level :  [9,10]U[14-19]   Android 2.3 - Android 4.X  中間不包含 Android3.X 阿里雲

    CPU: ARM 支持, x86不支持。spa

    系統: 阿里雲系統不支持。.net

    虛擬機: Dalvik 支持, ART 不支持。

安全(Security):

     在主APK應用此技術後,當無防範措施時,極有可能給不安全代碼以可乘之機。特別注意!!!

        1,打包apk必須使用主app簽名文件簽名;

        2,主app對加載的patch apk作簽名和無篡改校驗

自手淘項目實踐的一個簡單HotPatch過程。


Hotpatch的工做流程是:

         1.實現一個從服務器端獲取Patch信息的接口(上傳本地客戶端版本等信息,服務器好根據這些信息來判斷是否有對應的Patch包),並將這個信息注入給HotpatchManager。

         2.檢測客戶端是否能夠支持。(Android L和Android M)目前都不支持,最低支持2.3

         3.若是客戶端支持,那就調用第一步注入的Patch包獲取類,獲取到對應的Patch信息。下載Patch apk文件。

         4.校驗。獲取下載好的Patch apk md5簽名信息和服務器給的Patch信息的md5值是否同樣,而後還要校驗Patch apk和宿主apk簽名是否一致。加校驗是爲了防止Patch apk被篡改,若是load進去了一個第三方的Patch,那就是引狼入室了。必定不能去掉校驗,不能去掉,不能去掉,重要的事情說三遍!!!

         5.校驗成功,就load Patch apk。


可提高的部分:

     1,獲取PATCH的接口能夠增長經過推送來推進更新,這樣可以增長實時性,出現嚴重問題時,直接熱修補。

     2,在程序入口和Patch程序下載完成後都須要須要啓動Patch過程。

     3,建議Patch框架程序中設置有維護PatchAPK和Patch列表的數據存儲,以及恢復機制。以便當Patch丟失或者損毀時,自動下載並Patch.

     4,Patch的下載存儲目錄,強烈建議放置到應用的私有目錄下,提高安全級別。防止被誤刪誤清。


BTW在使用過程當中,若是主APK已經混淆,須要經過打包時的map.txt文件找到函數混淆後的名字。



參考:

《阿里巴巴HotPatch開源項目》github地址 https://github.com/alibaba/dexposed

Android-HotPatch在線熱補丁方案》原文的地址:http://www.jianshu.com/p/2a7d16ab29e8

「手機淘寶HotPatch實踐」《Android HotPatch系列之-項目介紹》 地址:http://my.oschina.net/fengcunhan/blog/487296

相關文章
相關標籤/搜索