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