應用程序加殼配置方法與裝置制造方法
【專利摘要】本發(fā)明涉及一種應用程序加殼配置方法,其包括以下步驟:解析所述應用程序原安裝包,獲得其內部文件;構造集合所述原安裝包與所述內部文件的加殼安裝包,使加殼安裝包與原安裝包具有不同的包名,所述被集合的內部文件中配置有加載模塊,該加載模塊,用于將被集合的原安裝包加載到沙箱運行環(huán)境中以運行所述應用程序;安裝該加殼安裝包。此外,本發(fā)明還涉及與該方法相應的一種應用程序加殼配置裝置。本發(fā)明使得目標應用程序能夠運行于沙箱運行環(huán)境中,并且能確保系統(tǒng)的安全。
【專利說明】應用程序加殼配置方法與裝置
【技術領域】
[0001] 本發(fā)明涉及計算機軟件安全【技術領域】,尤其涉及一種應用程序加殼配置方法及相 應的裝置。
【背景技術】
[0002] 沙箱是一種按照安全策略限制程序行為的執(zhí)行環(huán)境,目前已經(jīng)廣泛實用于各種操 作系統(tǒng)中。以Android為例,一些應用程序,出于實現(xiàn)應用程序固有功能需要之外的目的, 特別是商業(yè)目的,隨意申請系統(tǒng)權限,獲取用戶隱私數(shù)據(jù)、執(zhí)行網(wǎng)絡訪問、保持設備活動、發(fā) 送短信行為等。輕則可能導致用戶隱私數(shù)據(jù)泄露,或者占用系統(tǒng)資源,重則可能通過惡意扣 費、植入廣告、消耗資費、欺詐誘騙等,使用戶遭受損失。因此,通過沙箱技術提供的執(zhí)行環(huán) 境,由沙箱對系統(tǒng)的資源、權限進行管理,讓應用程序于該沙箱中運行,應用程序的訪問先 經(jīng)沙箱按安全策略進行審查,由此,形成一種相對于系統(tǒng)本身的隔離運行效果,可以有效地 保護系統(tǒng)的安全。對于沙箱中所用到的安全策略,適應各種不同的操作系統(tǒng)有不同的細節(jié) 考慮,這些有關技術實現(xiàn)的基本知識,均已為本領域技術人員所掌握,恕不贅述。
[0003] 目前有多種實例來實現(xiàn)沙箱技術。這些實例中,一方面,沙箱技術為了兼容市面的 多種應用,一般僅僅通過限定沙箱的安全策略,控制該應用的可執(zhí)行資源而實現(xiàn)。然而,在 安全領域,攻防雙方的技術水平此消彼長,傳統(tǒng)的僅僅通過限制安全策略的沙箱,有時難以 確保能夠達到所期望的目的,必須借助于更富技術含量的新方案。另一方面,沙箱技術往往 涉及系統(tǒng)底層操作,而在諸如以Android為代表的Unix系的操作系統(tǒng)中,本身有著嚴格的 權限管理,這樣,便導致在未獲得Root授權的前提下,難以應用沙箱技術去構造沙箱??梢?獨辟蹊徑,去實現(xiàn)免Root環(huán)境下的沙箱環(huán)境,然而,在這種情況下,往往會引起多方面的一 些技術障礙,這些障礙依沙箱的具體實現(xiàn)方式而定。
[0004] 目前現(xiàn)有技術中,對于這種免Root沙箱,盡管存在理論可能,未見成熟案例。但 是,從以上的分析可以看出,要基于免Root環(huán)境實現(xiàn)一種更為安全的沙箱技術,需要結合 其具體技術原理,來考慮其自身的具體構造以及在必要時考慮對相關應用程序的重構,使 得重構后的應用程序可以無縫運行于已經(jīng)基于系統(tǒng)而保持相對獨立的沙箱之中,通過該應 用程序在沙箱中的運行,實現(xiàn)應有的安全控制效果。
【發(fā)明內容】
[0005] 本發(fā)明的第一目的在于提供一種應用程序加殼配置方法,以便為免Root沙箱環(huán) 境配置便于加載運行的應用程序。
[0006] 本發(fā)明的第二目在于提供一種適于構造第一目的所述的方法的應用程序加殼配 直裝直。
[0007] 為實現(xiàn)本發(fā)明的目的,本發(fā)明采取如下技術方案:
[0008] 本發(fā)明的一種應用程序加殼配置方法,其包括以下步驟:
[0009] 解析所述應用程序原安裝包,獲得其內部文件;
[0010] 構造集合所述原安裝包與所述內部文件的加殼安裝包,使加殼安裝包與原安裝包 具有不同的包名,所述被集合的內部文件中配置有加載模塊,該加載模塊,用于將被集合的 原安裝包加載到沙箱運行環(huán)境中以運行所述應用程序;
[0011] 安裝該加殼安裝包。
[0012] 較佳的,加殼安裝包的包名,由所述原安裝包的包名附加前綴構成。
[0013] 具體的,所述內部文件之一為被集合的原安裝包的配置文件的副本,該副本中涉 及組件和動作名稱處均被附加所述的前綴,所述配置文件的副本特指Androidmanifest. xml文件。
[0014] 進一步,所述加載模塊設置于內部文件之一的代碼文件中,該加載模塊被配置為 采用反射調用機制加載所述被集合的原安裝包以運行所述應用程序。所述代碼文件特指 classes, dex 文件。
[0015] 根據(jù)本發(fā)明的一個實例所揭示,所述內部文件包括被集合的自原安裝包獲得的資 源文件和/或動態(tài)庫文件及其相應的目錄結構。
[0016] 具體的,所述資源文件特指Res目錄及其下所包含的文件,所述動態(tài)庫文件特指 Lib目錄及其下所包含的文件。
[0017] 較佳的,所述資源文件包括圖標文件,且該圖標文件基于被集合的自原安裝包獲 得的相應圖標文件進行局部修改所得。
[0018] 具體的,所述被集合的原安裝包被置于加殼安裝包的Assets目錄中。
[0019] 進一步,所述加載模塊被配置為引導沙箱運行環(huán)境對所述應用程序的運行進程實 施安全監(jiān)控,以實現(xiàn)該應用程序在沙箱運行環(huán)境中的正常運行。
[0020] 本發(fā)明提供的一種應用程序加殼配置裝置,其特征在于,包括:
[0021] 獲取單元,用于解析所述應用程序原安裝包,獲得其內部文件;
[0022] 構造單元,用于構造集合所述原安裝包與所述內部文件的加殼安裝包,使加殼安 裝包與原安裝包具有不同的包名,所述被集合的內部文件中配置有加載模塊,該加載模塊, 用于將被集合的原安裝包加載到沙箱運行環(huán)境中以運行所述應用程序;
[0023] 安裝單元,用于安裝該加殼安裝包。
[0024] 相較于現(xiàn)有技術,本發(fā)明至少具有如下優(yōu)點:
[0025] 1、借助目標應用程序安裝包自身的內部文件為該安裝包加殼,生成加殼安裝 包,使加殼安裝包具有與原安裝包具有不同的包名(PackageName),原安裝包的對應組 件和動作便被加殼安裝包進行注冊,由此,在宿主應用程序安裝運行后,再借助反射調 用機制去加載安裝包的四大組件時,借助相應函數(shù)使宿主應用程序的包名與目標應用 程序所調度的包名保持一致,在Android系統(tǒng)中,既能使活動組件和服務組件建立與 ActivityManagerService的正常通信,又能使活動組件、服務組件以及廣播組件等,順利被 PackageManagerService識別,降低現(xiàn)有技術中有關加殼應用程序運行異常的錯誤率。
[0026] 2、通過在加殼的宿主應用程序中配置用于反射調用原安裝包的加載模塊,并且由 加載模塊建立起原安裝包的目標應用程序與沙箱運行環(huán)境之間的通信,使得目標應用程序 的活動過程可以進一步被沙箱運行環(huán)境進行監(jiān)視,從而對其適用安全策略,以及對其進行 資源引用重定向等,確保目標應用程序能被宿主應用程序正常加載并保持正常運行。
[0027] 3、由于宿主應用程序利用原安裝包的Androidmanifest. xml為藍本,修改 包名后,完成了正常的安裝注冊程序,不必為被反射調用的目標應用程序的各個組件 (Activity, Service, Receiver)單獨構造主函數(shù)入口(ActivityThread. main)和提供 LoadedAPK對象,也不必考慮因包名而帶來的PackageManagerService校驗的程序實現(xiàn)復 雜度問題,從而大大提高程序運行效率。
[0028] 本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變 得明顯,或通過本發(fā)明的實踐了解到。
【專利附圖】
【附圖說明】
[0029] 本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結合附圖對實施例的描述中將變 得明顯和容易理解,其中 :
[0030] 圖1是本發(fā)明的應用程序加殼配置方法的流程原理圖;
[0031] 圖2是本發(fā)明的應用程序加殼配置裝置的原理圖;
[0032] 圖3是本發(fā)明的應用程序免Root運行控制方法的流程原理圖;
[0033] 圖4是本發(fā)明的應用程序免Root運行控制裝置的原理圖。
【具體實施方式】
[0034] 下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終 相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附 圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0035] 本【技術領域】技術人員可以理解,除非特意聲明,這里使用的單數(shù)形式"一"、"一 個"、"所述"和"該"也可包括復數(shù)形式。應該進一步理解的是,本發(fā)明的說明書中使用的措 辭"包括"是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加 一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元 件被"連接"或"耦接"到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在 中間元件。此外,這里使用的"連接"或"耦接"可以包括無線連接或無線耦接。這里使用 的措辭"和/或"包括一個或更多個相關聯(lián)的列出項的全部或任一單元和全部組合。
[0036] 本【技術領域】技術人員可以理解,除非另外定義,這里使用的所有術語(包括技術 術語和科學術語),具有與本發(fā)明所屬領域中的普通技術人員的一般理解相同的意義。還應 該理解的是,諸如通用字典中定義的那些術語,應該被理解為具有與現(xiàn)有技術的上下文中 的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含 義來解釋。
[0037] 本【技術領域】技術人員可以理解,這里所使用的"終端"、"終端設備"既包括無線信 號接收器的設備,其僅具備無發(fā)射能力的無線信號接收器的設備,又包括接收和發(fā)射硬件 的設備,其具有能夠在雙向通信鏈路上,執(zhí)行雙向通信的接收和發(fā)射硬件的設備。這種設備 可以包括:蜂窩或其他通信設備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示 器的蜂窩或其他通信設備;PCS(Personal Communications Service,個人通信系統(tǒng)),其可 以組合語音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;PDA(Personal Digital Assistant,個 人數(shù)字助理),其可以包括射頻接收器、尋呼機、互聯(lián)網(wǎng)/內聯(lián)網(wǎng)訪問、網(wǎng)絡瀏覽器、記事本、 日歷和/或GPS (Global Positioning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或 掌上型計算機或其他設備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計算 機或其他設備。這里所使用的"終端"、"終端設備"可以是便攜式、可運輸、安裝在交通工具 (航空、海運和/或陸地)中的,或者適合于和/或配置為在本地運行,和/或以分布形式, 運行在地球和/或空間的任何其他位置運行。這里所使用的"終端"、"終端設備"還可以是 通信終端、上網(wǎng)終端、音樂/視頻播放終端,例如可以是PDA、MID (MobiIe Internet Device, 移動互聯(lián)網(wǎng)設備)和/或具有音樂/視頻播放功能的移動電話,也可以是智能電視、機頂盒 等設備。
[0038] 本【技術領域】技術人員可以理解,這里所使用的服務器、云端、遠端網(wǎng)絡設備等概 念,具有等同效果,其包括但不限于計算機、網(wǎng)絡主機、單個網(wǎng)絡服務器、多個網(wǎng)絡服務器集 或多個服務器構成的云。在此,云由基于云計算(Cloud Computing)的大量計算機或網(wǎng)絡 服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超 級虛擬計算機。本發(fā)明的實施例中,遠端網(wǎng)絡設備、終端設備與WNS服務器之間可通過任何 通信方式實現(xiàn)通信,包括但不限于,基于3GPP、LTE、WIMX的移動通信、基于TCP/IP、UDP協(xié) 議的計算機網(wǎng)絡通信以及基于藍牙、紅外傳輸標準的近距無線傳輸方式。
[0039] 本領域技術人員應當理解,本發(fā)明所稱的"應用"、"應用程序"、"應用軟件"以及類 似表述的概念,是業(yè)內技術人員所公知的相同概念,是指由一系列計算機指令及相關數(shù)據(jù) 資源有機構造的適于電子運行的計算機軟件。除非特別指定,這種命名本身不受編程語言 種類、級別,也不受其賴以運行的操作系統(tǒng)或平臺所限制。理所當然地,此類概念也不受任 何形式的終端所限制。
[0040] 本發(fā)明以下即將描述的一種方法和裝置所實施的應用場景,是安裝在移動終端上 的基于Android操作系統(tǒng)的運行環(huán)境。
[0041] 為了說明本發(fā)明的實施,本發(fā)明試圖結合計算機程序的靜態(tài)和動態(tài)兩個方面進行 描述,所謂靜態(tài)方面,是指程序安裝包、文件、數(shù)據(jù)庫等存儲于媒介的存儲對象;所謂動態(tài)方 面,是指被調入內存中執(zhí)行的動態(tài)對象,包括但不局限于進程、線程、所用到的數(shù)據(jù)等。鑒于 計算機軟件技術的這些特點,不應將本發(fā)明所述及的各個方法、步驟、子步驟、裝置、單元、 模塊等,孤立地理解為僅靜態(tài)或僅動態(tài)的方面,本領域技術人員對此應當知曉。故而,本領 域技術人員應當能夠依據(jù)本發(fā)明有關靜態(tài)的表述而將其對應到動態(tài)的進程活動,或者依據(jù) 本發(fā)明有關動態(tài)的進程活動對應到其靜態(tài)的表現(xiàn)形式,建立起靜態(tài)與動態(tài)兩方面的必然性 關聯(lián),以此為基礎來理解本發(fā)明。
[0042] 本領域技術人員應當知曉,本發(fā)明是基于免Root提權而提出的,然而,提權操 作只是Android系統(tǒng)所實施的權限管理控制,本發(fā)明也當然地適用于已經(jīng)Root提權的 Android操作系統(tǒng)中。
[0043] 本發(fā)明是基于沙箱原理而提出的,故而,本領域技術人員得以結合公知的沙箱實 現(xiàn)原理來理解本發(fā)明的實施。沙箱的作用是為目標應用程序的提供相對封閉的運行環(huán)境, 使應用程序對系統(tǒng)的資源訪問,借助沙箱安全策略的應用,而被限制在規(guī)定的范圍之內。因 而,本發(fā)明的實質在于提供一種沙箱實例,從兩個方面來實現(xiàn),第一方面是提供構造目標應 用程序的解決方案,第二方面是提供與前者相應的運行控制方案。這兩個方面可以被集成 到一個沙箱實現(xiàn)軟件中,利用其第一方面的實現(xiàn)對目標應用程序進行加工,進而利用其第 二方面的實現(xiàn),為目標應用程序提供安全的沙箱運行環(huán)境。
[0044] 有鑒于此,本發(fā)明的應用程序加殼配置方法,主要體現(xiàn)沙箱實例的第一方面,用于 加工適配于相應的沙箱運行環(huán)境的目標應用程序,在如圖1所示的實例中,該方法包括如 下步驟:
[0045] S11、解析所述應用程序原安裝包,獲得其內部文件。
[0046] 這里所稱的應用程序,即前文所稱的目標應用程序。由于本發(fā)明基于免Root需求 而提出,根據(jù)Android固有的原理,所述目標應用程序一般為用戶自行安裝的第三方應用。 [0047] 本發(fā)明可以通過接管安裝器,來實現(xiàn)對第三方應用的安裝控制。具體而言,可以 由用戶通過本發(fā)明提供的沙箱應用程序下載并安裝該第三方應用而獲得所述原安裝包,或 者,也可由該沙箱應用程序從/data/app中獲取相應安裝包文件。對于已裝應用,可以本發(fā) 明處理完畢之后,誘導用戶卸載舊應用,安裝新應用。
[0048] 解析應用程序的原安裝包的手段,為本領域技術人員所熟知。安裝包APK文件本 質上是利用ZIP壓縮技術結合簽名技術實現(xiàn)的壓縮包,因此,一方面可以通過解壓技術釋 放其內部文件,另一方面還可通過Apktool之類的工具軟件獲取其內部文件(在這種情況 下其代碼文件會被反向為.smali文件)。本領域技術人員均能嫻熟地利用這些公知技術在 一個給定目錄中對原安裝包進行處理,從而通過內存操作(非文件操作)的方式來獲得其 中的內部文件。
[0049] Android安裝包的內部文件,參閱下表所示:
[0050] 表I APK文件內部的文件結構
[0051]
【權利要求】
1. 一種應用程序加殼配置方法,其特征在于,包括w下步驟: 解析所述應用程序原安裝包,獲得其內部文件; 構造集合所述原安裝包與所述內部文件的加殼安裝包,使加殼安裝包與原安裝包具有 不同的包名,所述被集合的內部文件中配置有加載模塊,該加載模塊,用于將被集合的原安 裝包加載到沙箱運行環(huán)境中W運行所述應用程序; 安裝該加殼安裝包。
2. 根據(jù)權利要求1所述的應用程序加殼配置方法,其特征在于,加殼安裝包的包名,由 所述原安裝包的包名附加前綴構成。
3. 根據(jù)權利要求2所述的應用程序加殼配置方法,其特征在于,所述內部文件之一為 被集合的原安裝包的配置文件的副本,該副本中涉及組件和動作名稱處均被附加所述的前 綴,所述配置文件的副本特指An化oidmanifest. xml文件。
4. 根據(jù)權利要求1所述的應用程序加殼配置方法,其特征在于,所述加載模塊設置于 內部文件之一的代碼文件中,該加載模塊被配置為采用反射調用機制加載所述被集合的原 安裝包W運行所述應用程序。
5. 根據(jù)權利要求4所述的應用程序加殼配置方法,其特征在于,所述代碼文件特指 classes, dex 文件。
6. 根據(jù)權利要求1至5中任意一項所述的應用程序加殼配置方法,其特征在于,所述內 部文件包括被集合的自原安裝包獲得的資源文件和/或動態(tài)庫文件及其相應的目錄結構。
7. 根據(jù)權利要求6所述的應用程序加殼配置方法,其特征在于,所述資源文件特指Res 目錄及其下所包含的文件,所述動態(tài)庫文件特指Lib目錄及其下所包含的文件。
8. 根據(jù)權利要求6所述的應用程序加殼配置方法,其特征在于,所述資源文件包括圖 標文件,且該圖標文件基于被集合的自原安裝包獲得的相應圖標文件進行局部修改所得。
9. 根據(jù)權利要求1至5中任意一項所述的應用程序加殼配置方法,其特征在于,所述被 集合的原安裝包被置于加殼安裝包的Assets目錄中。
10. -種應用程序加殼配置裝置,其特征在于,包括: 獲取單元,用于解析所述應用程序原安裝包,獲得其內部文件; 構造單元,用于構造集合所述原安裝包與所述內部文件的加殼安裝包,使加殼安裝包 與原安裝包具有不同的包名,所述被集合的內部文件中配置有加載模塊,該加載模塊,用于 將被集合的原安裝包加載到沙箱運行環(huán)境中W運行所述應用程序; 安裝單元,用于安裝該加殼安裝包。
【文檔編號】G06F9/48GK104462880SQ201410712413
【公開日】2015年3月25日 申請日期:2014年11月28日 優(yōu)先權日:2014年11月28日
【發(fā)明者】楊威 申請人:北京奇虎科技有限公司