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