用于移動應用保護的系統(tǒng)和方法
【專利說明】用于移動應用保護的系統(tǒng)和方法
[0001]相關申請的交叉引用
[0002]本公開內容要求對2013年7月17日提交的美國臨時專利申請N0.61/847,203的優(yōu)先權以及來自該美國臨時專利申請的權益,它的全文通過弓I用并入本文。
技術領域
[0003]本專利文件中所描述的技術一般性地涉及移動設備,并且更特別地涉及移動應用保護。
【背景技術】
[0004]移動設備(例如,智能電話)經常能夠支持各種各樣的應用(即,應用程序)來豐富用戶體驗。虛擬機(VM)通常對應于計算機的一種軟件實施方式,該軟件實施方式在任意平臺上以相同方式提供用于執(zhí)行一個或多個應用的獨立編程環(huán)境,并且抽象去除底層的硬件或操作系統(tǒng)(OS)的細節(jié)。使用在移動設備中的VM可以包括:例如,Java虛擬機(JVM)、安卓的Dalvik VM、由蘋果的iPhone操作系統(tǒng)(1S)所使用的低級虛擬機(LLVM)、等等。VM可以執(zhí)行到字節(jié)代碼的編譯以克服具體硬件或OS的限制,在應用的實際操作期間解譯字節(jié)代碼,以及執(zhí)行該應用。為移動設備所開發(fā)的應用經常分布在應用包中,應用包包含用以運行應用的元素,諸如程序代碼、資源、資產(assets)、證書和清單。例如,對于安卓智能電話,應用包對應于其文件名以apk”結尾的應用包文件(APK文件)。
【發(fā)明內容】
[0005]根據本文所描述的教導,提供了系統(tǒng)和方法以用于移動應用保護。接收與應用相關聯(lián)的可執(zhí)行代碼。至少部分地基于該可執(zhí)行代碼來生成加密的代碼和包裝器(wrapper)代碼。該加密的代碼能夠至少部分地基于該包裝器代碼而被解密。為移動設備生成包括該加密的代碼和該包裝器代碼的應用包。
[0006]在一個實施例中,用于保護用于移動設備的應用的系統(tǒng)包括:加密模塊和包生成器。該加密模塊被配置為:接收與應用相關聯(lián)的可執(zhí)行代碼,并且至少部分地基于該可執(zhí)行代碼來生成加密的代碼和包裝器代碼。該加密的代碼能夠至少部分地基于該包裝器代碼而被解密。該包生成器被配置為:為移動設備生成包括該加密的代碼和該包裝器代碼的應用包。
[0007]在另一個實施例中,用于保護用于移動設備的應用的系統(tǒng)包括:一個或多個數(shù)據處理器和機器可讀存儲介質。該存儲介質以用于命令這些數(shù)據處理器以執(zhí)行某些操作的指令來編碼。接收與應用相關聯(lián)的可執(zhí)行代碼。至少部分地基于該可執(zhí)行代碼來生成加密的代碼和包裝器代碼。該加密的代碼能夠至少部分地基于該包裝器代碼而被解密。為移動設備生成包括該加密的代碼和該包裝器代碼的應用包。
【附圖說明】
[0008]圖1描繪了一個示例圖,該示例圖示出了用于移動設備的應用的示例打包流程。
[0009]圖2描繪了一個示例圖,該示例圖示出了應用包的部分加密。
[0010]圖3描繪了一個示例圖,該示例圖示出了用于移動設備的應用的示例打包流程。
[0011]圖4描繪了一個示例圖,該示例圖示出了用于移動設備的應用的另一個示例打包流程。
[0012]圖5描繪了一個示例圖,該示例圖示出了應用包的簽名校驗。
[0013]圖6描繪了一個示例圖,該示例圖示出了應用包的散列值校驗。
[0014]圖7描繪了用于保護用于移動設備的應用的示例流程圖。
【具體實施方式】
[0015]圖1描繪了一個示例圖,該示例圖示出了針對用于移動設備的應用的示例打包流程。如圖1中所示出的,應用102被編譯并且打包到應用包104中,應用包104然后被分發(fā)給一個或多個移動設備106。具體地說,應用102使用安卓軟件開發(fā)套件(SDK)以Java語言而寫成。在編譯和打包期間,Java代碼首先被編譯為采用Java字節(jié)代碼格式的類文件。接著,這些類文件被轉換為采用Dalvik字節(jié)代碼格式的DEX文件,其中Dalvik字節(jié)代碼與用于安卓的Dalvik VM的本機格式相對應。應用包(例如,APK文件)104包括清單文件(例如,AndroidManifest.xml)、可執(zhí)行代碼(例如,classes, dex文件)、資源(例如,resources, arse文件)、未編譯的資源、等等。
[0016]應用包104能夠經常容易被反編譯和篡改。惡意軟件可能被插入到應用包104中。當被篡改的應用包104在移動設備106上被運行時,惡意操作可能在后臺執(zhí)行而引起對移動設備106的危害。因此,保護應用包104免于被篡改是重要的。
[0017]圖2描繪了一個示例圖,該示例圖示出了應用包的部分加密。如圖2中所示出的,原始應用包202被部分地加密以生成新的應用包204。具體地說,與用于移動設備的應用相關聯(lián)的可執(zhí)行代碼206 (例如,classes, dex文件)被轉換為兩個文件-加密的代碼210 (例如,加密的DEX文件)和包裝器代碼208 (例如,classes, dex’文件)。
[0018]在一些實施例中,包裝器代碼208不包括用于執(zhí)行應用的功能的基本邏輯代碼。替代地,基本邏輯代碼被加密并且成為加密的代碼210的一部分。包裝器代碼208被用來輔助對加密的代碼210的解密以及調用基本邏輯代碼。本機庫代碼212被用來支持包裝器代碼208 (例如,classes, dex’文件)加載加密的代碼210 (例如,通過本機安全類加載器)以及解密目標移動設備的存儲器中的加密的代碼210。
[0019]在某些實施例中,新的應用包204包括META-1NF目錄214,META-1NF目錄214可以包含清單文件(例如,“MANIFEST.MF”)、證書(例如,“CERT.RSA”)、以及資源的列表(例如,“CERT.SF”)。另外,新的應用包204包括附加清單文件216 (例如,AndroidManifest.xml),附加清單文件216描述了名稱、版本、訪問權限、以及用于該應用的參考庫文件。新的應用包204可以包括其他文件218,諸如包含對于處理器的軟件層是特定的經編譯的代碼的“l(fā)ib”目錄、包含經預編譯的資源的“resources, arse”文件、包含未被編譯到“resources.arse”文件中的資源的“res”目錄、以及包含應用資產的“資產”目錄。
[0020]圖3描繪了一個示例圖,該示例圖示出了針對用于移動設備的應用的示例打包流程。如圖3中所示出的,應用302被編譯并且打包到原始應用包304中,并且原始應用包304被部分地加密以生成新的應用包310,新的應用包310然后被分發(fā)給一個或多個移動設備312。加密組件308執(zhí)行對原始應用包304的部分加密,并且包生成器306生成新的應用包310。例如,原始應用包304和新的應用包310分別包括與原始應用包202和新的應用包204相同的組件。
[0021]具體地說,加密組件308將可執(zhí)行代碼314(例如,classes, dex文件)轉換為加密的代碼316 (例如,加密的DEX文件)和包裝器代碼318 (例如,classes, dex’文件)。包裝器代碼318不包括用于執(zhí)行應用308的功能的基本邏輯代碼,并且基本邏輯代碼包含在加密的代碼316中。本機庫代碼320被用來支持包裝器代碼318加載加密的代碼316以及解密移動設備312的存儲器中的加密的代碼316。例如,移動設備312包括移動設備仿真器。
[0022]如圖4中所