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