本申請是于2015年1月12日提交的美國申請No.14/594,377的延續(xù)并且要求該美國申請的權(quán)益,該美國申請要求于2014年9月24日提交的美國臨時申請No.62/054,853的權(quán)益,出于所有目的將這兩個申請的全部內(nèi)容通過引用并入本文。
本申請涉及于2013年3月15日提交的美國申請No.13/841,498以及于2014年3月14日提交的美國申請No.14/213,244但不要求這兩個申請的優(yōu)先權(quán),出于所有目的將這兩個申請的全部內(nèi)容通過引用并入本文。
技術(shù)領(lǐng)域
一般而言,本申請涉及數(shù)據(jù)處理。具體而言,本申請涉及用于向移動設(shè)備和其它設(shè)備上的軟件應用提供安全服務的系統(tǒng)、方法和機器可讀介質(zhì),其中安全服務包括認證、授權(quán)、審計、單點登錄、安全策略實施、密鑰管理和分發(fā)、安全通信、安全數(shù)據(jù)存儲和安全數(shù)據(jù)共享等。
背景技術(shù):
在移動設(shè)備上方便地訪問企業(yè)資源是一個反復出現(xiàn)的問題。一旦移動設(shè)備管理(MDM)解決方案被安裝在移動設(shè)備上,則幾乎移動設(shè)備上的所有內(nèi)容成為企業(yè)數(shù)據(jù)。如果移動設(shè)備的用戶希望將它用于非企業(yè)目的,則這可能是次優(yōu)的。
應用(或它們有時被稱為“app”)被頻繁地更新和修訂。電子郵件應用每隔幾個月就打更新補丁并不是罕見的。移動設(shè)備和其它計算設(shè)備常常具有許多應用,這些應用中的每個應用被頻繁更新。這可能使得保護移動設(shè)備免受黑客攻擊是困難的,因為計算設(shè)備的安全一般僅取決于其最薄弱的一環(huán)。如果一個應用遭受安全異常,則潛在地可能危及設(shè)備上的數(shù)據(jù)中的所有數(shù)據(jù)。
由于這些安全漏洞,許多公司不允許通過雇員自己的設(shè)備對他們的公司網(wǎng)絡(luò)的訪問(通常被稱為自帶設(shè)備(BYOD)訪問)。除非雇員同意上文描述的鎖定用戶設(shè)備上的所有內(nèi)容的MDM解決方案,否則公司不采納BYOD的理念。替代方案是雇主為雇員提供用于企業(yè)訪問的電子設(shè)備;然而,這是昂貴的并且需要更新基礎(chǔ)設(shè)施。
移動設(shè)備上的應用的更好安全性、靈活性和集成是所需要的。
技術(shù)實現(xiàn)要素:
一般而言,描述了用于在移動應用被安裝到計算設(shè)備上之前自動將移動應用“容器化(containerize)”以使得應用的網(wǎng)絡(luò)調(diào)用和輸入/輸出(I/O)調(diào)用中的全部網(wǎng)絡(luò)調(diào)用和I/O調(diào)用之前都有必要的用戶認證、令牌選擇和/或加密的系統(tǒng)、設(shè)備和方法。在本機應用在構(gòu)造器調(diào)用或網(wǎng)絡(luò)調(diào)用或I/O調(diào)用中執(zhí)行任何代碼之前,執(zhí)行安全代碼。
“容器化器(containerizer)”應用以本機的、未修改的應用作為輸入并且輸出容器化的、經(jīng)修改的應用。具體而言,從Google應用包(APK)文件提取用于Google計算機應用的ApplicationManifest.XML文件和Google可執(zhí)行文件(DEX)字節(jié)碼文件。為應用、內(nèi)容提供器(Content Provider)和活動創(chuàng)建包裝器類和假(dummy)生命周期方法。一個目的是創(chuàng)建假生命周期,以使得在認證完成之前不執(zhí)行原始代碼;一旦認證成功完成,則在執(zhí)行實際應用代碼之前獲取和應用策略。
移動設(shè)備應用的生命周期可以被修改。方法將APK文件解碼并且從APK文件提取Android清單和DEX文件。該方法從清單讀取應用類名,然后解析應用類的字節(jié)碼,重命名方法CLINIT(靜態(tài)初始化器)、INIT(構(gòu)造器)、attachBaseContext和onCreate(應用生命周期方法),并且插入具有原始名稱(即,CLINIT、INIT、attachBaseContext和onCreate)的空白假方法。在處理應用類之后,該方法從清單獲取內(nèi)容提供器類的名稱,并且通過追加后綴常量來修改(清單中的)這些名稱。然后,該方法利用字節(jié)碼操縱來為內(nèi)容提供器創(chuàng)建充當原始內(nèi)容提供器之上的包裝器/委托類的具有經(jīng)修改的名稱的類。一旦生成了用于內(nèi)容提供器的包裝器,則該方法從清單文件讀取活動的名稱,它利用字節(jié)碼解析器來重命名方法CLINIT、INIT和生命周期方法(onCreate、onResume、onStart、onRestart、onPause、onStop、onDestroy、finish)并且在它們的位置中創(chuàng)建假方法。另外,在DEX文件中添加假啟動器活動,并且該假啟動器活動的名稱作為(移除來自原始啟動器活動的啟動器屬性的)啟動器活動被添加到清單文件中,這是啟動應用時要調(diào)用的第一個活動。一旦應用生命周期控制進來,則觸發(fā)假啟動器活動認證并且獲取策略。此后,調(diào)用(invoke)原始啟動器活動。
用假方法/類代替原始生命周期方法/類的目的是使得在完成認證和獲取策略之前不執(zhí)行應用代碼。容器化器不僅修改生命周期,而且可以包裝文件系統(tǒng)調(diào)用和網(wǎng)絡(luò)調(diào)用,以在這些調(diào)用中注入安全性。例如,在設(shè)備上寫入任何數(shù)據(jù)之前,數(shù)據(jù)將被加密,并且將在讀取操作中被解密。類似地,所有網(wǎng)絡(luò)調(diào)用可以通過安裝在企業(yè)網(wǎng)絡(luò)中的網(wǎng)關(guān)來代理,以使得可以通過適當?shù)男诺纴砜刂坪吐酚伤芯W(wǎng)絡(luò)業(yè)務。為了執(zhí)行網(wǎng)絡(luò)攔截,類似于對寫/讀操作的加密/解密,從路由業(yè)務的網(wǎng)絡(luò)進行認證可能是重要的;密鑰管理器應當被初始化。一旦認證完成,則可以初始化密鑰管理器,并且接收認證令牌以通過網(wǎng)絡(luò)通信。以相同的序列觸發(fā)被重命名的原始生命周期方法/類。在一些實例中,可以只在控制進入活動生命周期(例如,活動的onCreate/onResume)中時,才調(diào)用認證。因此,原始生命周期被假生命周期代替。一旦認證發(fā)生,則原始生命周期在認證之后被調(diào)用。
當啟動容器化的應用時,發(fā)生的第一件事是應用類的初始化。由于所有的初始化/生命周期方法被重命名,因此該代碼都沒有被執(zhí)行。相反,(由容器化器注入的)假方法被執(zhí)行。在應用類初始化之后,內(nèi)容提供器被初始化并且用于內(nèi)容提供器的(由容器化器注入的)包裝器類被初始化。
在應用和內(nèi)容提供器初始化之后,應用生命周期進入假啟動器活動,假啟動器活動觸發(fā)認證并且在成功認證之后初始化密鑰管理器和網(wǎng)絡(luò)管理器。在此之后,觸發(fā)原始生命周期。第一個應用的類(重命名的CLINIT、重命名的INIT和重命名的attachBaseContext)被調(diào)用。在執(zhí)行重命名的生命周期方法之后,應用類原始內(nèi)容提供器類被初始化并且它們的onCreate被調(diào)用。一旦原始內(nèi)容提供器被初始化,則應用的類的原始onCreate被調(diào)用。完成所有這些之后,調(diào)用原始啟動器活動并且相應地調(diào)用剩余的應用功能。
有時候,可以在某些具體活動時觸發(fā)應用,在這些具體活動中在應用類和內(nèi)容提供器初始化之后,控制不進入假啟動器活動而是直接進入被調(diào)用的活動。出于該原因,我們在活動中重命名了靜態(tài)初始化器(CLINIT)、構(gòu)造器(INIT)和生命周期方法,并且在所有活動中添加了用于活動生命周期的假方法。這些假方法在調(diào)用原始的重命名的生命周期方法之前檢查認證。如果未認證,則onCreate/onResume的假方法觸發(fā)認證。成功認證后,用于應用和內(nèi)容提供器初始化的原始生命周期被觸發(fā)。此后,調(diào)用活動的原始CLINIT、INIT和onCreate,然后相應地進行剩余的應用流。
本發(fā)明的一些實施例涉及一種修改移動設(shè)備應用的生命周期的方法。該方法包括:提供應用清單文件和字節(jié)碼文件,該應用清單文件和字節(jié)碼文件對應于計算機軟件應用;將應用類的原始方法重命名為字節(jié)碼文件中的重命名的方法;將包裝器方法插入字節(jié)碼文件中的應用類中,該包裝器方法具有原始方法的名稱,該包裝器方法被配置為在調(diào)用重命名的方法之前調(diào)用認證或加密方法;將原始內(nèi)容提供器類的名稱修改為應用清單文件中的經(jīng)修改的內(nèi)容提供器類名稱;以及在字節(jié)碼文件中創(chuàng)建包裝器內(nèi)容提供器類,包裝器內(nèi)容提供器類具有經(jīng)修改的內(nèi)容提供器類名稱,包裝器內(nèi)容提供器類被配置為在轉(zhuǎn)發(fā)對原始內(nèi)容提供器類的方法的調(diào)用之前檢查原始內(nèi)容提供器類是否被實例化。
該方法還可以包括將活動類的原始方法的名稱重命名為字節(jié)碼文件中該活動類的重命名的方法,并且在字節(jié)碼文件中的該活動類中插入假方法,該假方法具有活動類的原始方法的名稱,該假方法被配置為在調(diào)用活動類的重命名的方法之前調(diào)用認證或加密方法。
應用清單文件中的所有內(nèi)容提供器類名稱可以被重命名。該方法還可以包括由包裝器方法讀取策略,其中對認證或加密方法的調(diào)用基于策略。策略可以從信息技術(shù)(IT)部門發(fā)送到移動設(shè)備應用安裝在其上的移動設(shè)備。
包裝器方法可以包括對移動設(shè)備管理器應用的調(diào)用。原始方法可以包括靜態(tài)塊初始化。原始方法可以包括構(gòu)造器。該方法還可以包括重命名應用靜態(tài)初始化方法、應用構(gòu)造器方法、應用attachBaseContext()方法、內(nèi)容提供器靜態(tài)初始化方法、內(nèi)容提供器構(gòu)造器方法、內(nèi)容提供器onCreate()方法、應用onCreate()方法、啟動器活動靜態(tài)初始化方法、啟動器活動構(gòu)造器方法以及字節(jié)碼文件中的啟動器活動onCreate()、onStart()和onResume()方法。
該方法還可以包括將onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到包裝器類中。原始方法的重命名可以包括將前綴或后綴追加到原始方法,以創(chuàng)建重命名的方法。應用清單文件可以包括可擴展標記語言(XML)代碼。字節(jié)碼文件可以是用于Google計算機應用的Google可執(zhí)行文件(DEX)字節(jié)碼文件。該方法還可以包括從Google應用包(APK)文件提取應用清單文件和字節(jié)碼文件。
其它實施例涉及執(zhí)行上文引用的方法的系統(tǒng)以及采用或存儲用于上文描述的方法的指令的機器可讀有形存儲介質(zhì)。
本發(fā)明內(nèi)容既不旨在識別要求保護的主題的關(guān)鍵特征或必要特征,也不旨在單獨用來確定要求保護的主題的范圍。應當通過參考本專利的整個說明書的適當?shù)牟糠?、任何或全部附圖以及每項權(quán)利要求來理解主題。
附圖說明
圖1示出了根據(jù)實施例的連接到受保護的公司網(wǎng)絡(luò)的移動設(shè)備。
圖2A-2B示出了根據(jù)實施例來修訂應用清單文件。
圖3A-3B示出了根據(jù)實施例來修訂字節(jié)碼文件。
圖4示出了根據(jù)實施例的對應用生命周期的修改。
圖5是示出根據(jù)實施例的過程的流程圖。
圖6繪出了用于實現(xiàn)實施例中的一個實施例的聯(lián)網(wǎng)系統(tǒng)的簡化示意圖。
圖7示出了其中可以實現(xiàn)本發(fā)明的各種實施例的示例性計算機系統(tǒng)。
圖8示出了可以在其中實現(xiàn)本發(fā)明的各種實施例的、用于修改移動設(shè)備應用的生命周期的示例性系統(tǒng)的簡化結(jié)構(gòu)圖。
具體實施方式
在下面的描述中,出于解釋的目的,闡述了具體的細節(jié),以便于提供對本發(fā)明的實施例的透徹理解。然而,將明顯的是,可以在沒有這些具體細節(jié)的情況下實踐各種實施例。附圖和描述不旨在是限制性的。
可以以各種配置提供附圖中的一些圖中繪出的系統(tǒng)。在一些實施例中,系統(tǒng)可以被配置為其中系統(tǒng)的一個或多個組件跨云計算系統(tǒng)中的一個或多個網(wǎng)絡(luò)分布的分布式系統(tǒng)。
本發(fā)明的方面涉及如何在基于Google操作系統(tǒng)(OS)的設(shè)備上執(zhí)行安全容器化。描述了如何在Android平臺上實現(xiàn)容器化目標。它定義了如何攔截Android應用生命周期并且執(zhí)行注入以實現(xiàn)期望目標的過程。
容器化是一種保護移動應用的新方法。容器化可以提供安全的工作空間,并且圍繞它集成其它應用,以便這些其它應用與工作空間一起共享容器化環(huán)境的生態(tài)系統(tǒng)。
現(xiàn)有的行業(yè)解決方案只是在移動設(shè)備上安裝MDM;之后,設(shè)備有效地成為企業(yè)的財產(chǎn)。甚至個人應用也要遵守企業(yè)策略。
通過諸如本文描述的移動工作空間解決方案之類的移動工作空間解決方案,個人數(shù)據(jù)和企業(yè)數(shù)據(jù)可以保持在分開的控制下。在容器化環(huán)境中工作的企業(yè)應用及其數(shù)據(jù)仍然受公司策略的控制。它們的網(wǎng)絡(luò)訪問和文件系統(tǒng)訪問在容器化環(huán)境中以常見的方式被保護。
這樣的移動工作空間解決方案的技術(shù)優(yōu)點是它可以:
-為移動應用增加安全性;
-提供安全的網(wǎng)絡(luò)和文件訪問;
-提供對應用的經(jīng)認證的訪問;
-提供對應用程序的策略控制;
-提供數(shù)據(jù)泄漏保護;以及
-提供對設(shè)備上的容器化環(huán)境的控制,該容器化環(huán)境可以從管理控制臺鎖定/擦除/清除,而不影響設(shè)備上的個人數(shù)據(jù)。
方法
Google應用的一般生命周期通常包括以下內(nèi)容:
-應用類初始化
-靜態(tài)初始化
-構(gòu)造器初始化
-attachBaseContext()應用生命周期初始化
-內(nèi)容提供器
-靜態(tài)初始化
-構(gòu)造器初始化
-onCreate()內(nèi)容提供器生命周期初始化
-onCreate()應用生命周期初始化
-啟動器活動初始化
-靜態(tài)初始化
-構(gòu)造器初始化
-onCreate()、onStart()、onResume()活動生命周期初始化
人們可以更改這個生命周期,以便于迫使來自應用的每個網(wǎng)絡(luò)調(diào)用和I/O調(diào)用預先檢查安全策略和/或運行安全檢查。
圖1示出了根據(jù)實施例的連接到受保護的公司網(wǎng)絡(luò)的移動設(shè)備。在系統(tǒng)100中,智能電話102經(jīng)廣域網(wǎng)110與公司網(wǎng)絡(luò)120通信。
在智能電話102中,在虛擬機(VM)106上運行的應用108被拒絕與外部實體的直接連接。替代地,關(guān)鍵構(gòu)造器和初始化的包裝器迫使網(wǎng)絡(luò)調(diào)用經(jīng)過移動數(shù)據(jù)管理器(MDM)104。移動數(shù)據(jù)管理器104可以檢查設(shè)備的通信的認證令牌和其它安全相關(guān)的方面。應用108有效地通過到廣域網(wǎng)110(諸如因特網(wǎng))的移動數(shù)據(jù)管理器104與公司網(wǎng)絡(luò)120通信。
在公司網(wǎng)絡(luò)120上,所有傳入和傳出的網(wǎng)絡(luò)業(yè)務由防火墻112檢查和調(diào)節(jié)。移動設(shè)備102對企業(yè)服務器114的調(diào)用可以采取企業(yè)web服務116的形式。例如,應用108可以利用(tap into)由企業(yè)服務116提供的內(nèi)部雇員記錄。
公司的IT部門可以發(fā)布策略118,策略118的副本通過廣域網(wǎng)110發(fā)送到移動設(shè)備102。應用108中的包裝器類可以查詢可以采取可擴展標記語言(XML)文件的形式的策略的副本,以便確定是否以及何時獲取用于某些事務的安全證書等。
圖2A-2B示出了根據(jù)實施例來修訂應用清單文件。在圖2A中,原始應用清單文件202具有原始類名稱204“oracle.webcenter.content.android.documentsprovider.WCCFilesPr ovider”。在由該類名稱命名的元素內(nèi)的是原始子元素。
在圖2B中,經(jīng)修訂的應用清單文件206被示為具有被重命名為帶“MyC14N”前綴的重命名的類名稱的原始類名稱204。即,它被重命名為
“oracle.webcenter.content.android.documentsprovider.MyC14NWC CFilesProvider”。具有與原始類名稱相同的類名稱(即,“oracle.webcenter.content.android.documentsprovider.WCCFilesPr ovider”)的另一新類定義210被添加。在新類定義下的是新的子元素。新的子元素可以是或者可以不是原始子元素的副本。一些子元素可以被刪除。
圖3A-3B示出了根據(jù)實施例來修訂字節(jié)碼文件。
在圖3A中,原始字節(jié)碼文件302具有原始類304“ContentProvider”。在該類內(nèi)的是原始代碼。
在圖3B中,經(jīng)修訂的類型代碼文件306被示為具有被重命名為帶“MyC14N”前綴的重命名的類的原始類名稱。即,它被重命名為“MyC14NContentProvider”。它的原始代碼保持不變。
具有與原始類“ContentProvider”相同的名稱的新類310被添加。這個新類定義檢查它是否已經(jīng)被實例化和初始化的變量。它還創(chuàng)建諸如onCreate()之類的包裝器方法,這些包裝器方法讀取策略,基于策略認證、加密/解密或執(zhí)行其它安全功能,然后調(diào)用原始類的原始onCreate()函數(shù)。
圖4示出了用于攔截可以被采用的應用代碼的執(zhí)行的字節(jié)碼操縱/注入。對于每個可能的網(wǎng)絡(luò)和文件系統(tǒng)操作,可以創(chuàng)建被注入到現(xiàn)有應用中的包裝器類??梢栽诂F(xiàn)有代碼中實現(xiàn)實際的字節(jié)碼修改,從而用包裝器類代替原始類。例如:
-一旦可以用定制的包裝器類代替FileInputStream和FileOutputStream。
由于可能希望控制應用生命周期,因此可以使用用于注入/修改現(xiàn)有生命周期代碼的字節(jié)碼操縱方法。
使用該方法的一個目的是在用戶被允許執(zhí)行應用之前使用戶通過認證,并且在認證之后從安全工作空間獲取會話數(shù)據(jù)和加密密鑰。因此,網(wǎng)絡(luò)調(diào)用和文件系統(tǒng)調(diào)用實際上可以工作。一些包裝器需要主加密密鑰來解碼用來在每個文件操作中加密/解密數(shù)據(jù)的加密密鑰。同樣,對于網(wǎng)絡(luò)調(diào)用,可以要求會話令牌,以確立對任何網(wǎng)絡(luò)資源進行的調(diào)用的真實性,所述對任何網(wǎng)絡(luò)資源進行的調(diào)用可以經(jīng)由Oracle移動安全網(wǎng)關(guān)或其它基于云的網(wǎng)關(guān)來路由。
為了實現(xiàn)上面的用例,可以延遲整個應用生命周期并且引入假生命周期,以使得可以首先認證用戶,然后獲取主加密密鑰和會話令牌。
這里是根據(jù)實施例的應用生命周期中的分步列表。
-在操作402中應用類初始化發(fā)生。
-對于靜態(tài)初始化404,在容器化步驟430中它被重命名為定制定義的、帶常量前綴/后綴的名稱,以使得它可以稍后被調(diào)用并且被注入空的類初始化器。
-對于構(gòu)造器初始化406,在容器化步驟432中它被重命名為定制定義的、帶常量前綴/后綴的名稱,以使得它可以稍后被調(diào)用并且被注入空的類構(gòu)造器。這可以對所有可用的構(gòu)造器進行。它可以對超類的所有構(gòu)造器進行,并且它們相應的super()調(diào)用也可以被改變?yōu)樯厦嫣岬降亩ㄖ泼Q。
-在操作434中方法attachBaseContext()408可以被重命名為定制定義的、帶常量前綴/后綴的名稱,以使得它可以稍后被調(diào)用并且被注入用于它的空方法。
-對于內(nèi)容提供器初始化410,可以在操作436中為在應用中定義的每個內(nèi)容提供器注入假內(nèi)容提供器并且還可以改變相關(guān)聯(lián)的清單XML(可擴展標記語言)中的引用。這些假內(nèi)容提供器又包含對原始內(nèi)容提供器的引用,并且對該假內(nèi)容提供器的所有方法調(diào)用都被委托給原始內(nèi)容提供器。在對任何接口方法進行第一次調(diào)用之前,內(nèi)容提供器通常不被正常地初始化?;蛘呖梢院唵蔚胤Q為,它是懶惰的初始化。例如,如果內(nèi)容提供器是MyContentProvider,則可以實現(xiàn)以下內(nèi)容:
-將清單中的條目
<provider android:name=”MyContentProvider”>改成
<provider android:name=”MyC14NContentProvider”>
-將靜態(tài)init 412和構(gòu)造器init 414注入名為MyC14NContentProvider的類。
以這種方式,通過引入假內(nèi)容提供者并且將它們的接口方法委托給原始類的原始方法來延遲內(nèi)容提供器的初始化。
-對于應用onCreate()初始化416,容器化器可以執(zhí)行以下操作。
-諸如對于生命周期初始化418,可以在操作438中將onCreate()方法重命名為定制定義的、帶常量前綴/后綴的名稱,以使得它可以稍后被調(diào)用并且繼而被注入onCreate()的假方法。這對所有超類進行,并且super.onCreate()的調(diào)用可以委托給上面提到的重命名的onCreate()方法。
-對于活動生命周期初始化,諸如對于啟動器活動初始化420,可以在操作440中注入假活動,使其成為啟動器活動,并且從原始活動中移除啟動器動作。一旦在假活動中獲取控制,則可以調(diào)用工作空間以供認證,工作空間將返回會話令牌和主加密密鑰。一旦獲取了密鑰,則可以通過調(diào)用被重命名的原始方法來重新初始化整個周期。
-原始應用類靜態(tài)初始化器422可以被調(diào)用。
-然后原始應用類構(gòu)造器424可以被調(diào)用。
-原始應用類attachBaseContext()可以被調(diào)用。
-可以對假內(nèi)容提供器調(diào)用Init(),Init()將初始化原始內(nèi)容提供器。
-原始應用類onCreate()可以被調(diào)用。
-類似地,可以注入/修改原始現(xiàn)有活動的生命周期。
-可以在操作442中重命名426的onCreate()、onRestart()、onResume()方法,并且注入定制定義的生命周期方法,在該定制定義的生命周期方法中將進行策略實現(xiàn)的任務,然后調(diào)用原始的重命名的方法。例如:
-onCreate()重命名為onCreate_C14N()
-注入我們自己的onCreate()
-類似地,這可以對其它生命周期方法onStart()、onResume()、onPause()、onStop()、onDestroy()執(zhí)行。
-使用字節(jié)碼修改/注入的相同方法,可以用自己定制的調(diào)用代替共享偏好的系統(tǒng)調(diào)用和startActivity(),在該自己定制的調(diào)用中可以執(zhí)行所有加密/解密和策略檢查,然后調(diào)用原始的操作。
圖5是示出根據(jù)實施例的過程500的流程圖。該過程可以由計算機通過執(zhí)行處理器中的指令或以其它方式來實現(xiàn)。在操作501中,提供應用清單文件和字節(jié)碼文件,應用清單文件和字節(jié)碼文件對應于計算機軟件應用。在操作502中,將應用類的原始方法重命名為字節(jié)碼文件中的重命名的方法。在操作503中,包裝器方法被插入到字節(jié)碼文件中的應用類中,該包裝器方法具有原始方法的名稱,該包裝器方法被配置為在調(diào)用重命名的方法之前調(diào)用認證或加密方法。在操作504中,原始內(nèi)容提供器類的名稱被修改為應用清單文件中的經(jīng)修改的內(nèi)容提供器類名稱。在操作505中,在字節(jié)碼文件中創(chuàng)建包裝器內(nèi)容提供器類,該包裝器內(nèi)容提供器類具有經(jīng)修改的內(nèi)容提供器類名稱,該包裝器內(nèi)容提供器類被配置為在轉(zhuǎn)發(fā)對原始提供器類的方法的調(diào)用之前檢查原始內(nèi)容提供器類是否被實例化。
在操作506中,活動類的原始方法的名稱被重命名為字節(jié)碼文件中該活動類的重命名的方法。在操作507中,假方法被插入到字節(jié)碼文件中的該活動類中,該假方法具有活動類的原始方法的名稱,該假方法被配置為在調(diào)用活動類的重命名的方法之前調(diào)用認證或加密方法。
計算機系統(tǒng)基礎(chǔ)設(shè)施
圖6繪出了用于實現(xiàn)實施例中的一個實施例的分布式系統(tǒng)600的簡化示意圖。在所示的實施例中,分布式系統(tǒng)600包括一個或多個客戶機計算設(shè)備602、604、606和608,該一個或多個客戶機計算設(shè)備被配置為經(jīng)一個或多個網(wǎng)絡(luò)610執(zhí)行和操作客戶機應用,諸如web瀏覽器、專有客戶機(例如,Oracle Forms)等。服務器612可以經(jīng)由網(wǎng)絡(luò)610與遠程客戶機計算設(shè)備602、604、606和608可通信地耦接。
在各種實施例中,服務器612可以適于運行由系統(tǒng)的組件中的一個或多個組件提供的一個或多個服務或軟件應用。在一些實施例中,這些服務可以作為基于web的服務或云服務向客戶機計算設(shè)備602、604、606和/或608的用戶提供,或者在軟件即服務(SaaS)模型下向客戶機計算設(shè)備602、604、606和/或608的用戶提供。操作客戶機計算設(shè)備602、604、606和/或608的用戶進而可以利用一個或多個客戶機應用與服務器612交互,以利用由這些組件提供的服務。
在圖中所繪出的配置中,系統(tǒng)600的軟件組件618、620和622被示為在服務器612上實現(xiàn)。在其它實施例中,系統(tǒng)600的組件中的一個或多個組件和/或由這些組件提供的服務還可以由客戶機計算設(shè)備602、604、606和/或608中的一個或多個實現(xiàn)。然后,操作客戶機計算設(shè)備的用戶可以利用一個或多個客戶機應用來使用由這些組件提供的服務。這些組件可以在硬件、固件、軟件或其組合中實現(xiàn)。應當理解的是,各種不同的系統(tǒng)配置是可能的,這些系統(tǒng)配置可以不同于分布式系統(tǒng)600。因此,圖中所示的實施例是用于實現(xiàn)實施例系統(tǒng)的分布式系統(tǒng)的一個示例,并且不旨在是限制性的。
客戶機計算設(shè)備602、604、606和/或608可以是運行諸如Microsoft Windows之類的軟件和/或諸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等之類的各種移動操作系統(tǒng)并且啟用因特網(wǎng)、電子郵件、短消息服務(SMS)、或其它通信協(xié)議的便攜式手持設(shè)備(例如,蜂窩電話、計算平板、個人數(shù)字助理(PDA))或可穿戴設(shè)備(例如,Google頭戴式顯示器)。客戶機計算設(shè)備可以是通用個人計算機,舉例來說,包括運行各種版本的MicrosoftApple和/或Linux操作系統(tǒng)的個人計算機和/或膝上型計算機。客戶機計算設(shè)備可以是運行包括但不限于各種GNU/Linux操作系統(tǒng)(諸如像Google Chrome OS)的各種商用的或類UNIX操作系統(tǒng)中的任何操作系統(tǒng)的工作站計算機??商娲鼗蚋郊拥?,客戶機計算設(shè)備602、604、606和608可以是能夠經(jīng)(一個或多個)網(wǎng)絡(luò)610通信的任何其它電子設(shè)備,諸如瘦客戶機計算機、啟用因特網(wǎng)的游戲系統(tǒng)(例如,具有或不具有姿勢輸入設(shè)備的Microsoft Xbox游戲機)和/或個人消息傳送設(shè)備。
雖然示例性分布式系統(tǒng)600被示為具有四個客戶機計算設(shè)備,但是任何數(shù)量的客戶機計算設(shè)備可以被支持。諸如具有傳感器的設(shè)備等之類的其它設(shè)備可以與服務器612交互。
分布式系統(tǒng)600中的(一個或多個)網(wǎng)絡(luò)610可以是本領(lǐng)域技術(shù)人員熟悉的可以利用各種商用協(xié)議中的任何商用協(xié)議支持數(shù)據(jù)通信的任何類型的網(wǎng)絡(luò),所述各種商用協(xié)議包括但不限于TCP/IP(傳輸控制協(xié)議/因特網(wǎng)協(xié)議)、SNA(系統(tǒng)網(wǎng)絡(luò)架構(gòu))、IPX(互聯(lián)網(wǎng)分組交換)、AppleTalk等。僅僅作為示例,(一個或多個)網(wǎng)絡(luò)610可以是局域網(wǎng)(LAN),諸如基于以太網(wǎng)、令牌環(huán)和/或其它網(wǎng)絡(luò)的LAN。(一個或多個)網(wǎng)絡(luò)610可以是廣域網(wǎng)和因特網(wǎng)。它可以包括虛擬網(wǎng)絡(luò),該虛擬網(wǎng)絡(luò)包括但不限于虛擬專用網(wǎng)絡(luò)(VPN)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)、公共交換電話網(wǎng)絡(luò)(PSTN)、紅外網(wǎng)絡(luò)、無線網(wǎng)絡(luò)(例如,在電氣和電子協(xié)會(IEEE)802.11協(xié)議族中的任何協(xié)議、和/或任何其它無線協(xié)議下操作的網(wǎng)絡(luò));和/或這些網(wǎng)絡(luò)和/或其它網(wǎng)絡(luò)的任何組合。
服務器612可以包括一個或多個通用計算機、專用服務器計算機(舉例來說,包括PC(個人計算機)服務器、服務器、中型服務器、大型計算機、機架式服務器等)、服務器場、服務器集群或任何其它適當?shù)牟贾煤?或組合。在各種實施例中,服務器612可以適于運行在前述公開內(nèi)容中描述的一個或多個服務或軟件應用。例如,服務器612可以對應于用于執(zhí)行根據(jù)本公開的實施例的上文描述的處理的服務器。
服務器612可以運行包括上面討論的操作系統(tǒng)中的任何操作系統(tǒng)以及任何商用的服務器操作系統(tǒng)的操作系統(tǒng)。服務器612還可以運行各種附加的服務器應用和/或中間層應用中的任何服務器應用和/或中間層應用,包括HTTP(超文本傳輸協(xié)議)服務器、FTP(文件傳輸協(xié)議)服務器、CGI(公共網(wǎng)關(guān)接口)服務器、服務器、數(shù)據(jù)庫服務器等。示例性數(shù)據(jù)庫服務器包括但不限于來自O(shè)racle、Microsoft、Sybase、IBM(國際商業(yè)機器)等的商用數(shù)據(jù)庫服務器。
在一些實施方式中,服務器612可以包括一個或多個應用,以分析和整合從客戶機計算設(shè)備602、604、606和608的用戶接收到的數(shù)據(jù)饋送和/或事件更新。作為示例,數(shù)據(jù)饋送和/或事件更新可以包括但不限于從一個或多個第三方信息源和持續(xù)數(shù)據(jù)流接收到的饋送、更新或?qū)崟r更新,該一個或多個第三方信息源和持續(xù)數(shù)據(jù)流可以包括與傳感器數(shù)據(jù)應用、金融收報機(ticker)、網(wǎng)絡(luò)性能測量工具(例如,網(wǎng)絡(luò)監(jiān)視和業(yè)務管理應用)、點擊流分析工具、汽車交通監(jiān)視等相關(guān)的實時事件。服務器612還可以包括經(jīng)由客戶機計算設(shè)備602、604、606和608的一個或多個顯示設(shè)備顯示數(shù)據(jù)饋送和/或?qū)崟r事件的一個或多個應用。
分布式系統(tǒng)600還可以包括一個或多個數(shù)據(jù)庫614和616。數(shù)據(jù)庫614和616可以駐留在各種位置中。作為示例,數(shù)據(jù)庫614和616中的一個或多個可以駐留在服務器612本地(和/或駐留在服務器612中)的非暫態(tài)存儲介質(zhì)上??商娲?,數(shù)據(jù)庫614和616可以遠離服務器612,并且經(jīng)由基于網(wǎng)絡(luò)的或?qū)S玫倪B接與服務器612通信。在一組實施例中,數(shù)據(jù)庫614和616可以駐留在存儲區(qū)域網(wǎng)絡(luò)(SAN)中。類似地,用于執(zhí)行屬于服務器612的功能的任何必要的文件可以適當?shù)卦诜掌?12本地存儲和/或遠程存儲。在一組實施例中,數(shù)據(jù)庫614和616可以包括適于響應于SQL格式的命令來存儲、更新和檢索數(shù)據(jù)的關(guān)系數(shù)據(jù)庫,諸如由Oracle提供的數(shù)據(jù)庫。
圖7示出了其中可以實現(xiàn)本發(fā)明的各種實施例的示例性計算機系統(tǒng)700。計算機系統(tǒng)700可以被用來實現(xiàn)上文描述的計算機系統(tǒng)中的任何計算機系統(tǒng)。如圖中所示,計算機系統(tǒng)700包括經(jīng)由總線子系統(tǒng)702與若干外圍子系統(tǒng)通信的處理單元704。這些外圍子系統(tǒng)可以包括處理加速單元706、I/O子系統(tǒng)708、存儲子系統(tǒng)718和通信子系統(tǒng)724。存儲子系統(tǒng)718包括有形的計算機可讀存儲介質(zhì)722和系統(tǒng)存儲器710。
總線子系統(tǒng)702提供用于使計算機系統(tǒng)700的各種組件和子系統(tǒng)按照預期彼此通信的機制。雖然總線子系統(tǒng)702被示意性地示為單條總線,但是總線子系統(tǒng)的替代實施例可以利用多條總線。總線子系統(tǒng)702可以是若干類型的總線結(jié)構(gòu)中的任何總線結(jié)構(gòu),包括利用各種總線架構(gòu)中的任何總線架構(gòu)的存儲器總線或存儲器控制器、外圍總線和局部總線。例如,這樣的總線架構(gòu)可以包括工業(yè)標準架構(gòu)(ISA)總線、微通道架構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子標準協(xié)會(VESA)局部總線以及可以被實現(xiàn)為根據(jù)IEEE P1386.1標準制造的夾層(Mezzanine)總線的外圍組件互連(PCI)總線。
可以被實現(xiàn)為一個或多個集成電路(例如,常規(guī)的微處理器或微控制器)的處理單元704控制計算機系統(tǒng)700的操作。處理單元704中可以包括一個或多個處理器。這些處理器可以包括單核或多核處理器。在某些實施例中,處理單元704可以被實現(xiàn)為具有包括在每個處理單元中的單個或多核處理器的一個或多個獨立處理單元732和/或734。在其它實施例中,處理單元704還可以被實現(xiàn)為通過將兩個雙核處理器集成到單個芯片中而形成的四核處理單元。
在各種實施例中,處理單元704可以響應于程序代碼而執(zhí)行各種程序,并且可以維護多個并發(fā)執(zhí)行的程序或過程。在任何給定的時間,要執(zhí)行的程序代碼中的一些或全部可以駐留在(一個或多個)處理器704和/或存儲子系統(tǒng)718中。通過適當?shù)木幊蹋?一個或多個)處理器704可以提供上文描述的各種功能。計算機系統(tǒng)700可以附加地包括處理加速單元706,處理加速單元706可以包括數(shù)字信號處理器(DSP)、專用處理器和/或其它處理器。
I/O子系統(tǒng)708可以包括用戶接口輸入設(shè)備和用戶接口輸出設(shè)備。用戶接口輸入設(shè)備可以包括鍵盤、諸如鼠標或軌跡球之類的指示設(shè)備、結(jié)合到顯示器中的觸摸板或觸摸屏、滾輪、點撥輪、撥盤、按鈕、開關(guān)、鍵板、具有語音命令識別系統(tǒng)的音頻輸入設(shè)備、麥克風以及其它類型的輸入設(shè)備。用戶接口輸入設(shè)備可以包括例如使得用戶能夠利用姿勢和口頭命令通過自然用戶接口來控制輸入設(shè)備(諸如Microsoft360游戲控制器)并與其交互的諸如Microsoft運動傳感器之類的運動感測和/或姿勢識別設(shè)備。用戶接口輸入設(shè)備還可以包括眼部姿勢識別設(shè)備,諸如檢測來自用戶的眼睛活動(例如,當拍攝圖片和/或進行菜單選擇時的“眨眼”)并且將眼部姿勢變換為到輸入設(shè)備(例如,Google)中的輸入的Google眨眼檢測器。附加地,用戶接口輸入設(shè)備可以包括使得用戶能夠通過語音命令與語音識別系統(tǒng)(例如,導航器)交互的語音識別感測設(shè)備。
用戶接口輸入設(shè)備還可以包括但不限于三維(3D)鼠標、操縱桿或指示桿、游戲板和圖形平板、以及音頻/視覺設(shè)備,諸如揚聲器、數(shù)碼照相機、數(shù)字攝像機、便攜式媒體播放器、網(wǎng)絡(luò)攝像機、圖像掃描儀、指紋掃描儀、條形碼讀取器3D掃描儀、3D打印機、激光測距儀、以及視線跟蹤設(shè)備。附加地,用戶接口輸入設(shè)備可以包括例如醫(yī)療成像輸入設(shè)備,諸如計算機斷層掃描、磁共振成像、正電子發(fā)射斷層掃描、醫(yī)療超聲檢查設(shè)備。用戶接口輸入設(shè)備還可以包括例如音頻輸入設(shè)備,諸如MIDI鍵盤、數(shù)字樂器等。
用戶接口輸出設(shè)備可以包括顯示子系統(tǒng)、指示器燈或者諸如音頻輸出設(shè)備之類的非視覺顯示器等。顯示子系統(tǒng)可以是陰極射線管(CRT)、諸如利用液晶顯示器(LCD)或等離子體顯示器的平板設(shè)備之類的平板設(shè)備、投影設(shè)備、觸摸屏等。一般而言,術(shù)語“輸出設(shè)備”的使用旨在包括用于向用戶或其它計算機輸出來自計算機系統(tǒng)700的信息的所有可能類型的設(shè)備和機構(gòu)。例如,用戶接口輸出設(shè)備可以包括但不限于可視地傳達文本、圖形和音頻/視頻信息的各種顯示設(shè)備,諸如監(jiān)視器、打印機、揚聲器、耳機、汽車導航系統(tǒng)、繪圖儀、語音輸出設(shè)備和調(diào)制解調(diào)器。
計算機系統(tǒng)700可以包括存儲子系統(tǒng)718,存儲子系統(tǒng)718包括被示為當前位于系統(tǒng)存儲器710內(nèi)的軟件元件。系統(tǒng)存儲器710可以存儲可在處理單元704上加載和執(zhí)行的程序指令以及在這些程序的執(zhí)行期間生成的數(shù)據(jù)。
取決于計算機系統(tǒng)700的配置和類型,系統(tǒng)存儲器710可以是易失性的(諸如隨機存取存儲器(RAM))和/或非易失性的(諸如只讀存儲器(ROM)、閃存存儲器,等等)。RAM通常包含可由處理單元704立即訪問和/或當前操作和執(zhí)行的數(shù)據(jù)和/或程序模塊。在一些實施方式中,系統(tǒng)存儲器710可以包括多種不同類型的存儲器,諸如靜態(tài)隨機存取存儲器(SRAM)或動態(tài)隨機存取存儲器(DRAM)。在一些實施方式中,包含有助于諸如在啟動期間在計算機系統(tǒng)700內(nèi)的元件之間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)通??梢源鎯υ赗OM中。作為示例而非限制,系統(tǒng)存儲器710還示出了應用程序712、程序數(shù)據(jù)714以及操作系統(tǒng)716,應用程序712可以包括客戶機應用、Web瀏覽器、中間層應用、關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)等。作為示例,操作系統(tǒng)716可以包括各種版本的MicrosoftApple和/或Linux操作系統(tǒng)、各種商用的或類UNIX操作系統(tǒng)(包括但不限于各種GNU/Linux操作系統(tǒng)、GoogleOS等)和/或移動操作系統(tǒng)(諸如iOS、Phone、OS、10OS和OS操作系統(tǒng))。
存儲子系統(tǒng)718還可以提供用于存儲提供一些實施例的功能的基本編程和數(shù)據(jù)構(gòu)造的有形的計算機可讀存儲介質(zhì)。當由處理器執(zhí)行時提供上文描述的功能的軟件(程序、代碼模塊、指令)可以被存儲在存儲子系統(tǒng)718中。這些軟件模塊或指令可以由處理單元704執(zhí)行。存儲子系統(tǒng)718還可以提供用于存儲根據(jù)本發(fā)明使用的數(shù)據(jù)的存儲庫。
存儲子系統(tǒng)700還可以包括可以被進一步連接到計算機可讀存儲介質(zhì)722的計算機可讀存儲介質(zhì)讀取器720。與系統(tǒng)存儲器710一起并且可選地與系統(tǒng)存儲器710組合,計算機可讀存儲介質(zhì)722可以全面地表示遠程存儲設(shè)備、本地存儲設(shè)備、固定存儲設(shè)備和/或可移動存儲設(shè)備加上用于臨時和/或較永久地包含、存儲、傳輸和檢索計算機可讀信息的存儲介質(zhì)。
包含代碼或代碼的部分的計算機可讀存儲介質(zhì)722還可以包括本領(lǐng)域已知或使用的任何適當?shù)慕橘|(zhì),包括存儲介質(zhì)和通信介質(zhì),諸如但不限于以用于信息的存儲和/或傳輸?shù)娜魏畏椒ɑ蚣夹g(shù)實現(xiàn)的易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。這可以包括有形的計算機可讀存儲介質(zhì),諸如RAM、ROM、電可擦除可編程ROM(EEPROM)、閃存存儲器或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光學存儲裝置、盒式磁帶、磁帶、磁盤存儲設(shè)備或其它磁性存儲設(shè)備、或者其它有形的計算機可讀介質(zhì)。這還可以包括非有形的計算機可讀介質(zhì),諸如可以被用來傳輸期望的信息并且可以由計算系統(tǒng)700訪問的數(shù)據(jù)信號、數(shù)據(jù)傳輸或任何其它介質(zhì)。
作為示例,計算機可讀存儲介質(zhì)722可以包括從不可移動、非易失性磁介質(zhì)讀取或向其寫入的硬盤驅(qū)動器,從可移動、非易失性磁盤讀取或向其寫入的磁盤驅(qū)動器,以及從可移動、非易失性光盤(諸如CD-ROM、DVD和盤)或其它光學介質(zhì)讀取或向其寫入的光盤驅(qū)動器。計算機可讀存儲介質(zhì)722可以包括但不限于驅(qū)動器、閃存存儲器卡、通用串行總線(USB)閃存驅(qū)動器、安全數(shù)字(SD)卡、DVD盤、數(shù)字視頻帶等。計算機可讀存儲介質(zhì)722還可以包括基于非易失性存儲器的固態(tài)驅(qū)動器(SSD)(諸如基于閃存存儲器的SSD、企業(yè)閃存驅(qū)動器、固態(tài)ROM等)、基于易失性存儲器的SSD(諸如基于固態(tài)RAM的SSD、基于動態(tài)RAM的SSD、基于靜態(tài)RAM的SSD、基于DRAM的SSD、磁阻RAM(MRAM)SSD),以及使用基于DRAM的SSD和基于閃存存儲器的SSD的組合的混合SSD。盤驅(qū)動器及其相關(guān)聯(lián)的計算機可讀介質(zhì)可以為計算機系統(tǒng)700提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲。
通信子系統(tǒng)724提供到其它計算機系統(tǒng)和網(wǎng)絡(luò)的接口。通信子系統(tǒng)724充當用于從來自計算機系統(tǒng)700的其它系統(tǒng)接收數(shù)據(jù)以及向來自計算機系統(tǒng)700的其它系統(tǒng)傳輸數(shù)據(jù)的接口。例如,通信子系統(tǒng)724可以使得計算機系統(tǒng)700能夠經(jīng)由因特網(wǎng)連接到一個或多個設(shè)備。在一些實施例中,通信子系統(tǒng)724可以包括用于(例如,利用蜂窩電話技術(shù)、增強的數(shù)據(jù)網(wǎng)絡(luò)技術(shù)(諸如3G、4G或EDGE(用于全球演進的增強的數(shù)據(jù)率))、WiFi(IEEE 802.11族標準)、或其它移動通信技術(shù)、或者其任何組合)訪問無線語音網(wǎng)絡(luò)和/或數(shù)據(jù)網(wǎng)絡(luò)的射頻(RF)收發(fā)器組件、全球定位系統(tǒng)(GPS)接收器組件和/或其它組件。在一些實施例中,除了無線接口之外或作為無線接口的代替,通信子系統(tǒng)724可以提供有線網(wǎng)絡(luò)連接(例如,以太網(wǎng))。
在一些實施例中,通信子系統(tǒng)724還可以代表可以使用計算機系統(tǒng)700的一個或多個用戶接收以結(jié)構(gòu)化和/或非結(jié)構(gòu)化數(shù)據(jù)饋送726、事件流728、事件更新730等形式的輸入通信。
作為示例,通信子系統(tǒng)724可以被配置為實時地接收來自社交網(wǎng)絡(luò)的用戶和/或諸如饋送、更新、web饋送(諸如豐富站點摘要(RSS)饋送)之類的其它通信服務的數(shù)據(jù)饋送726,和/或來自一個或多個第三方信息源的實時更新。
此外,通信子系統(tǒng)724還可以被配置為接收沒有明確結(jié)束的本質(zhì)上可以是連續(xù)的或無界的連續(xù)數(shù)據(jù)流形式的數(shù)據(jù),其中連續(xù)數(shù)據(jù)流可以包括實時事件的事件流728和/或事件更新730。生成連續(xù)數(shù)據(jù)的應用的示例可以包括例如傳感器數(shù)據(jù)應用、金融收報機、網(wǎng)絡(luò)性能測量工具(例如,網(wǎng)絡(luò)監(jiān)視和業(yè)務管理應用)、點擊流分析工具、汽車交通監(jiān)視等。
通信子系統(tǒng)724還可以被配置為向可以與耦接到計算機系統(tǒng)700的一個或多個流數(shù)據(jù)源計算機通信的一個或多個數(shù)據(jù)庫輸出結(jié)構(gòu)化和/或非結(jié)構(gòu)化數(shù)據(jù)饋送726、事件流728、事件更新730等。
計算機系統(tǒng)700可以是包括手持便攜式設(shè)備(例如,蜂窩電話、計算平板、PDA)、可穿戴設(shè)備(例如,Google頭戴式顯示器)、PC、工作站、大型機、信息亭(kiosk)、服務器機架或任何其它數(shù)據(jù)處理系統(tǒng)的各種類型中的一種類型。
由于計算機和網(wǎng)絡(luò)的不斷變化的本質(zhì),圖中繪出的計算機系統(tǒng)700的描述僅旨在作為具體示例。具有比圖中繪出的系統(tǒng)更多或更少的組件的許多其它配置是可能的。例如,定制的硬件還可以被使用和/或特定的元件可以在硬件、固件、軟件(包括小程序)或其組合中實現(xiàn)。此外,可以采用到其它計算設(shè)備(諸如網(wǎng)絡(luò)輸入/輸出設(shè)備)的連接。基于本文提供的公開內(nèi)容和教導,本領(lǐng)域普通技術(shù)人員將理解實現(xiàn)各種實施例的其它方式和/或方法。
圖8示出了其中可以實現(xiàn)本發(fā)明的各種實施例的、用于修改移動設(shè)備應用的生命周期的示例性系統(tǒng)800的簡化結(jié)構(gòu)圖。
如圖8中所示,示例性系統(tǒng)800可以包括第一提供單元801、第一重命名單元802、第一插入單元803、第一修改單元804和第一創(chuàng)建單元805。第一提供單元801可以被配置為提供相關(guān)聯(lián)的應用清單文件和字節(jié)碼文件,該應用清單文件和該字節(jié)碼文件對應于計算機軟件應用。第一重命名單元802可以被配置為將應用類的原始方法重命名為字節(jié)碼文件中的重命名的方法。第一插入單元803可以被配置為在字節(jié)碼文件中的應用類中插入包裝器方法,該包裝器方法具有原始方法的名稱,該包裝器方法被配置為在調(diào)用重命名的方法之前調(diào)用認證或加密方法。第一修改單元804可以被配置為將原始內(nèi)容提供器類的名稱修改為應用清單文件中的經(jīng)修改的內(nèi)容提供器類名稱。第一創(chuàng)建單元805可以被配置為在字節(jié)碼文件中創(chuàng)建包裝器內(nèi)容提供器類,該包裝器內(nèi)容提供器類具有經(jīng)修改的內(nèi)容提供器類名稱,該包裝器內(nèi)容提供器類被配置為在轉(zhuǎn)發(fā)對原始內(nèi)容提供器類的方法的調(diào)用之前檢查原始內(nèi)容提供器類是否被實例化。
第二重命名單元806可以被配置為將活動類的原始方法的名稱重命名為字節(jié)碼文件中該活動類的重命名的方法。第二插入單元807可以被配置為在字節(jié)碼文件中的該活動類中插入假方法,該假方法具有活動類的原始方法的名稱,該假方法被配置為在調(diào)用活動類的重命名方法之前調(diào)用認證或加密方法。
在一個實施例中,應用清單文件中的所有內(nèi)容提供器類名稱被重命名。
在一個實施例中,系統(tǒng)還可以包括:第一讀取單元808,其被配置為通過包裝器方法讀取策略,其中對認證或加密方法的調(diào)用基于策略。
在一個實施例中,策略從信息技術(shù)(IT)部門被發(fā)送到其上安裝移動設(shè)備應用的移動設(shè)備。
在一個實施例中,假類包括對移動設(shè)備管理器應用的調(diào)用。
在一個實施例中,類包括靜態(tài)塊初始化。
在一個實施例中,類包括構(gòu)造器。
在一個實施例中,系統(tǒng)還可以包括第三重命名單元809,其被配置為重命名應用靜態(tài)初始化方法、應用構(gòu)造器方法、應用attachBaseContext()方法、內(nèi)容提供器靜態(tài)初始化方法、內(nèi)容提供器構(gòu)造器方法、內(nèi)容提供器onCreate()方法、應用onCreate()方法、啟動器活動靜態(tài)初始化方法、啟動器活動構(gòu)造器方法以及字節(jié)碼文件中的啟動器活動onCreate()、onStart()和onResume()方法。
在一個實施例中,系統(tǒng)還可以包括第三插入單元810,其被配置為將onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到包裝器類中。
在一個實施例中,第一重命名單元可以包括追加單元,其被配置為將前綴或后綴追加到原始方法,以創(chuàng)建重命名的方法。
在一個實施例中,應用清單文件包括可擴展標記語言(XML)代碼。
在一個實施例中,字節(jié)碼文件是用于Google計算機應用的Google可執(zhí)行(DEX)字節(jié)碼文件。
在一個實施例中,系統(tǒng)還可以包括提取單元811,其被配置為從Google應用包(APK)文件提取應用清單文件和字節(jié)碼文件。
系統(tǒng)800的單元可以由硬件(諸如現(xiàn)場可編程門陣列(FPGA)、集成電路(IC)或?qū)S眉呻娐?ASIC)等)、軟件、固件或它們的任何組合來實現(xiàn)以實行本發(fā)明的原理。本領(lǐng)域技術(shù)人員應當理解,圖8中描述的單元可以被組合或分成子單元,以實現(xiàn)如上文描述的本發(fā)明的原理。因此,圖8中描述的單元可以根據(jù)實際需要根據(jù)如上面的實施例中描述的本發(fā)明的原理來進行各種操作。
根據(jù)本發(fā)明的一些示例性實施例可以如下。
(1)一種用于修改移動設(shè)備應用的生命周期的計算機系統(tǒng),該系統(tǒng)包括:
處理器,以及
與處理器可操作地耦接的存儲器,該處理器執(zhí)行來自存儲器的指令,
其中該處理器被配置為:
提供應用清單文件和字節(jié)碼文件,應用清單文件和字節(jié)碼文件對應于計算機軟件應用;
將應用類的原始方法重命名為字節(jié)碼文件中的重命名的方法;
在字節(jié)碼文件中的應用類中插入包裝器方法,該包裝器方法具有原始方法的名稱,該包裝器方法被配置為在調(diào)用重命名的方法之前調(diào)用認證或加密方法;
將原始內(nèi)容提供器類的名稱修改為應用清單文件中的經(jīng)修改的內(nèi)容提供器類名稱;以及
在字節(jié)碼文件中創(chuàng)建包裝器內(nèi)容提供器類,該包裝器內(nèi)容提供器類具有經(jīng)修改的內(nèi)容提供器類名稱,該包裝器內(nèi)容提供器類被配置為在轉(zhuǎn)發(fā)對原始內(nèi)容提供器類的方法的調(diào)用之前檢查原始內(nèi)容提供器類是否被實例化。
(2)根據(jù)(1)所述的計算機系統(tǒng),其中處理器還被配置為:
將活動類的原始方法的名稱重命名為字節(jié)碼文件中該活動類的重命名的方法;以及
在字節(jié)碼文件中的該活動類中插入假方法,該假方法具有活動類的原始方法的名稱,該假方法被配置為在調(diào)用活動類的重命名的方法之前調(diào)用認證或加密方法。
(3)根據(jù)(1)所述的計算機系統(tǒng),其中應用清單文件中的所有內(nèi)容提供器類名稱被重命名。
(4)根據(jù)(1)所述的計算機系統(tǒng),其中處理器還被配置為:
通過包裝器方法讀取策略,其中對認證或加密方法的調(diào)用基于策略。
(5)根據(jù)(4)所述的計算機系統(tǒng),其中策略從信息技術(shù)(IT)部門被發(fā)送到其上安裝移動設(shè)備應用的移動設(shè)備。
(6)根據(jù)(1)所述的計算機系統(tǒng),其中包裝器方法包括對移動設(shè)備管理器應用的調(diào)用。
(7)根據(jù)(1)所述的計算機系統(tǒng),其中原始方法包括靜態(tài)塊初始化。
(8)根據(jù)(1)所述的計算機系統(tǒng),其中原始方法包括構(gòu)造器。
(9)根據(jù)(8)所述的計算機系統(tǒng),其中處理器還被配置為:
重命名應用靜態(tài)初始化方法、應用構(gòu)造器方法、應用attachBaseContext()方法、內(nèi)容提供器靜態(tài)初始化方法、內(nèi)容提供器構(gòu)造器方法、內(nèi)容提供器onCreate()方法、應用onCreate()方法、啟動器活動靜態(tài)初始化方法、啟動器活動構(gòu)造器方法,以及字節(jié)碼文件中的啟動器活動onCreate()、onStart()和onResume()方法。
(10)根據(jù)(1)所述的計算機系統(tǒng),其中處理器還被配置為:
將onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到包裝器類中。
(11)根據(jù)(1)所述的計算機系統(tǒng),其中處理器被配置為重命名原始類名稱包括處理器被配置為將前綴或后綴追加到方法名稱,以創(chuàng)建重命名的方法。
(12)根據(jù)(1)所述的計算機系統(tǒng),其中應用清單文件包括可擴展標記語言(XML)代碼。
(13)根據(jù)(1)所述的計算機系統(tǒng),其中字節(jié)碼文件是用于Google計算機應用的Google可執(zhí)行(DEX)字節(jié)碼文件。
(14)根據(jù)(1)所述的計算機系統(tǒng),其中處理器還被配置為:
從Google應用包(APK)文件提取應用清單文件和字節(jié)碼文件。
在前述說明書中,參考其具體實施例描述了本發(fā)明的方面,但本領(lǐng)域技術(shù)人員將認識到本發(fā)明不限于此。上文描述的發(fā)明的各個特征和方面可以單獨使用或聯(lián)合使用。此外,在不背離本說明書的更廣泛的精神和范圍的情況下,可以在超出本文所描述的環(huán)境和應用的任何數(shù)量的環(huán)境和應用中利用實施例。相應地,說明書和附圖將被認為是說明性的而不是限制性的。