鉤子框架的制作方法
【專利說(shuō)明】
【背景技術(shù)】
[0001]應(yīng)用可以是能夠促使計(jì)算設(shè)備執(zhí)行特定功能的可執(zhí)行指令的集合。計(jì)算設(shè)備可以包括移動(dòng)電話(例如,智能電話),其可以具有能夠運(yùn)行各種應(yīng)用的各種操作系統(tǒng)(OS)(例如,移動(dòng)OS)。例如,應(yīng)用可以包括游戲應(yīng)用、導(dǎo)航應(yīng)用、照相機(jī)應(yīng)用,等等。能夠針對(duì)每個(gè)相應(yīng)OS來(lái)開(kāi)發(fā)應(yīng)用。
【附圖說(shuō)明】
[0002]圖1圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的環(huán)境的示例。
[0003]圖2A圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的流程圖的示例。
[0004]圖2B圖示出根據(jù)本公開(kāi)、用于實(shí)施用于特定操作系統(tǒng)的鉤子框架的流程圖的示例。
[0005]圖3A圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的系統(tǒng)的示例的圖。
[0006]圖3B圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的計(jì)算設(shè)備的示例的圖。
[0007]圖4圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的方法的示例的流程圖。
【具體實(shí)施方式】
[0008]移動(dòng)式應(yīng)用(例如,被配置用于移動(dòng)設(shè)備的應(yīng)用)開(kāi)發(fā)是通過(guò)不斷增長(zhǎng)的數(shù)量的移動(dòng)設(shè)備和與那些設(shè)備相關(guān)聯(lián)的能力所激勵(lì)的不斷增長(zhǎng)的實(shí)踐。部分地由于與移動(dòng)設(shè)備相關(guān)聯(lián)的能力的增加,依靠設(shè)備特征和/或嵌入客戶端邏輯(例如,JavaScript),應(yīng)用已經(jīng)變得越來(lái)越尖端。為了支持此類應(yīng)用的開(kāi)發(fā),可能有益的是,提供可以與和移動(dòng)設(shè)備相關(guān)聯(lián)的特定操作系統(tǒng)(OS)集成的開(kāi)發(fā)工具。例如,可能有益的是,與低層級(jí)接口中的特定OS集成,使得能夠使用諸如測(cè)試工具、記錄工具、監(jiān)測(cè)工具等等的應(yīng)用開(kāi)發(fā)工具。也能夠在消費(fèi)者應(yīng)用軟件和/或企業(yè)應(yīng)用軟件中使用此類低層級(jí)OS交互,以便例如實(shí)現(xiàn)諸如根據(jù)企業(yè)策略保證設(shè)備安全的目標(biāo)。
[0009]一些先前的方法通過(guò)鉤子允許低層級(jí)OS交互。鉤子可以包括修改應(yīng)用的行為和/或通過(guò)截獲在軟件組件之間傳遞的數(shù)據(jù)來(lái)收集與應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)。例如,鉤子可指監(jiān)測(cè)、改變,和/或以另外方式取得對(duì)應(yīng)用的控制的各種技術(shù)。例如,可以通過(guò)鉤子來(lái)截獲和/或復(fù)制傳遞到和/或來(lái)自于應(yīng)用的函數(shù)調(diào)用、消息,和/或網(wǎng)絡(luò)業(yè)務(wù)。鉤住應(yīng)用例如可以包括在應(yīng)用執(zhí)行之前將包括可執(zhí)行的鉤子指令的庫(kù)注入到應(yīng)用中,和/或在OS的運(yùn)行時(shí)間期間和/或在應(yīng)用的功能的執(zhí)行期間將可執(zhí)行的鉤子指令注入到應(yīng)用中。這些先前的方法能夠被用于實(shí)施虛擬機(jī)的OS。例如,這些方法能夠被用于Linux OS和/或用于實(shí)施Java虛擬機(jī)(JVM)(例如,能夠執(zhí)行Java字節(jié)碼的機(jī)器)的基于Java的OS。
[0010]然而,不能使用用于基于Linux和/或基于Java的OS的先前的方法來(lái)鉤住諸如安卓OS之類的一些移動(dòng)OS。例如,一些移動(dòng)OS不包括用于鉤住的應(yīng)用編程接口,并且因?yàn)榇祟愐苿?dòng)OS的啟動(dòng)序列不允許只讀存儲(chǔ)器(ROM)的改變,所以對(duì)于Linux OS進(jìn)行鉤住的先前方法行不通。
[0011]此外,不可能使用用于基于Java的OS的先前方法鉤住一些移動(dòng)OS。在一示例中,能夠使用類裝載器鉤住JVM0然而,其他移動(dòng)OS (例如,安卓OS)以及它們相關(guān)聯(lián)的虛擬機(jī)(例如,安卓Dalvik虛擬機(jī)(DVM))不支持類裝載器的使用,并且因此不能使用該方法被鉤住。
[0012]此外,能夠證明對(duì)于鉤住一些移動(dòng)OS,其他先前的方法是不足的。例如,先前的方法能夠模擬驅(qū)動(dòng)層。然而,在一些移動(dòng)OS中,驅(qū)動(dòng)器是ROM相關(guān)的,并且在沒(méi)有更換ROM的全部?jī)?nèi)核的情況下不能被更換,使該方法不切實(shí)際。其他先前的方法改變包裝庫(kù)層。然而,這在其中庫(kù)文件(例如,so”文件)被預(yù)鏈接在ROM編譯上的一些移動(dòng)OS上可能是不實(shí)用的。照此,可以不裝載原始庫(kù)。
[0013]例如,先前的方法能夠修改Jar”文件,jar”文件能夠被定義為用于將Javaclass”文件和/或相關(guān)聯(lián)的元數(shù)據(jù)聚合到一個(gè)文件中以在基于Java的OS上分配應(yīng)用軟件和/或庫(kù)的檔案文件格式。修改“.jar”文件可能牽涉提取“.jar”文件、手工地編輯
smali ”文件(例如,安卓的相當(dāng)于字節(jié)碼class”文件),并且再裝載修改的jar”文件。然而,該方法可能較復(fù)雜、難維護(hù),并且可能限制處理字節(jié)碼。此外,該方法可能不支持使用JNI的修改方法,JNI是能夠使在JVM中運(yùn)行的Java指令能夠調(diào)用以諸如C、C++和/或匯編之類的其他語(yǔ)言編寫(xiě)的本地應(yīng)用和庫(kù)和/或被其調(diào)用的編程框架。
[0014]相比之下,本公開(kāi)的示例可以包括修改負(fù)責(zé)啟動(dòng)虛擬機(jī)(例如,DVM)、預(yù)裝載由應(yīng)用使用的系統(tǒng)類和/或啟動(dòng)其他進(jìn)程的應(yīng)用進(jìn)程。本公開(kāi)的示例能夠修改應(yīng)用進(jìn)程以包括鉤子框架,該鉤子框架在虛擬機(jī)啟動(dòng)時(shí)能夠被執(zhí)行并且能夠在虛擬機(jī)上插入鉤子以經(jīng)由鉤子訪問(wèn)與應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)。
[0015]圖1圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的環(huán)境的示例。環(huán)境100被示為包括實(shí)施鉤子框架的系統(tǒng)104、移動(dòng)設(shè)備102-1,102-2........102-N、用戶設(shè)備110-1、
110-2........110-P、數(shù)據(jù)存貯器108,和鏈路106。數(shù)據(jù)存貯器108能夠與參考圖3A討論的那些相似。系統(tǒng)104能夠包括與參考圖3B討論的計(jì)算設(shè)備相似的計(jì)算設(shè)備。在本文所描述的移動(dòng)設(shè)備102-1、......、102-N可以是計(jì)算設(shè)備(例如,電子設(shè)備)。
[0016]用戶設(shè)備110-1........110-P可表示如下計(jì)算設(shè)備,其被配置為訪問(wèn)與在移動(dòng)設(shè)備102-1........102-N上已經(jīng)裝載和/或在定義的時(shí)間內(nèi)將裝載的應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)(例如,電子數(shù)據(jù))以傳遞這樣的數(shù)據(jù),和/或通過(guò)執(zhí)行指令來(lái)改變?cè)搼?yīng)用。用戶設(shè)備
110-1........110-P可以包括諸如圖形用戶界面(⑶I) 112的數(shù)字顯示器。類似地,在一些示例中,移動(dòng)設(shè)備102-1........102-N可以包括適于顯示電子數(shù)據(jù)的數(shù)字顯示器(未示出)。
[0017]用戶接口可以包括硬件組件和/或計(jì)算機(jī)可讀指令組件。例如,硬件組件可以包括輸入組件(例如,鼠標(biāo)、觸摸屏,和鍵盤(pán))和/或輸出組件(例如,顯示器)。示例性用戶接口可以包括⑶I 112。⑶I 112例如能夠數(shù)字地表示與經(jīng)由鉤子收集的應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)。也就是說(shuō),在一些示例中,能夠通過(guò)用戶設(shè)備110-1........110-P的用戶接口來(lái)顯示電子表示。此類顯示器能夠促進(jìn)用戶與計(jì)算機(jī)之間的交互(例如,允許用戶使用圖像和/或文本與計(jì)算機(jī)交互)。
[0018]鏈路106(例如,網(wǎng)絡(luò))表示電纜、無(wú)線、光纖,或經(jīng)由遠(yuǎn)程通信鏈路的遠(yuǎn)程連接、紅外線鏈路、射頻鏈路,和/或提供電子通信的其他連接器或系統(tǒng)。也就是說(shuō),鏈路106例如可以包括到內(nèi)部網(wǎng)、因特網(wǎng)、或者兩者的組合的鏈路,等等其他通信接口。鏈路106也可以包括中間代理(例如,中間代理服務(wù)器(未示出))、路由器、交換機(jī)、負(fù)載平衡器,等等。
[0019]在本文所描述的用于實(shí)施鉤子框架的系統(tǒng)104能夠表示實(shí)施鉤子框架的硬件和指令的不同組合。用于實(shí)施鉤子框架的系統(tǒng)104可以包括計(jì)算設(shè)備,例如,關(guān)于圖3B所討論的計(jì)算設(shè)備348。
[0020]圖2A圖示出根據(jù)本公開(kāi)、用于實(shí)施鉤子框架的流程圖的示例。例如,流程圖能夠圖示出諸如包括移動(dòng)OS的移動(dòng)設(shè)備之類的