The invention discloses a method for automatically generating Android application callback callback function based on sequence modeling, this method considers the life cycle of the callback function, GUI callback function and drive system of the callback function, in the pre design and a Android information database based on the completed callback function, pretreatment callback mapping of source program to get to the callback callback function set, non set and callback list mapping model is based on data, application component within the registration lifecycle callback relationship and relationship between components and the jump relationship of unity of abstract and generate callback sequence model. The method based on the callback function modeling automatically generates the callback sequence of Android application, and the modeling is comprehensive and uniform, and the execution speed is fast, and the practice proves that the method is reliable. Can be used for static analysis and internal callback modeling in applications on the Android platform.
【技術實現步驟摘要】
一種基于回調函數建模自動生成Android應用回調序列的方法
本專利技術屬于Android平臺上應用程序的靜態分析和內部回調建模
,具體涉及一種基于回調函數建模自動生成Android應用回調序列的方法。
技術介紹
當前移動設備已經成為人們生活必不可少的一部分。為了滿足人們日益增長的應用需求,移動設備上的應用層出不窮。其中基于Android平臺的應用數量巨大并且仍在持續增長,大量的Android平臺上的應用被證明具有功能或安全性方面的問題。因此,確保移動應用功能的正確性和使用的安全性越來越成為人們的關鍵需求。對Android應用進行安全檢查,靜態分析,需要將apk文件反編譯成介于java代碼和二進制碼之間的smali代碼,并對smali代碼進行靜態分析。區別于傳統的桌面應用程序,Andorid系統具有事件驅動的特性,雖然這個特性為其帶來諸多用戶體驗的優勢,然而高度的交互性不可避免的增加了程序分析和測試的難度。因為Android平臺的事件驅動特性,在對Android應用進行靜態分析基礎上創建相應模型的方法比直接對源碼進行分析要更具優勢。基于目前工作,能夠總結以下兩個結論:1)回調函數序列,作為Android系統的一項主要特性,在分析和測試移動應用的過程中占據關鍵地位。以此為基礎的回調函數序列提取技術彌補了傳統程序分析方法的不足。與傳統方法不同,回調函數序列不再考慮程序的控制流或數據流,而是關注事件序列的發生和相關特征的更新處理。因此,回調函數序列能夠解決由事件不確定性引起的邏輯問題,如事件異常,回調函數序列違法等,而這些問題利用傳統的分析技術是難 ...
【技術保護點】
一種基于回調函數建模自動生成Android應用回調序列的方法,其特征在于含有以下步驟:步驟1、搭建Android回調信息庫;步驟2、以Android應用的smali類型源碼為輸入,進行函數?回調映射預處理;步驟3、根據生命周期時序關系,生成生命周期回調序列;步驟4、識別注冊或釋放注冊動作的關鍵連接點,生成由注冊或釋放注冊引起的非生命周期回調序列;步驟5、識別Activity跳轉及Service跳轉動作的關鍵連接點,生成跳轉鏈接;步驟6、生成由Activity跳轉和Service跳轉引起的非生命周期回調序列。
【技術特征摘要】
1.一種基于回調函數建模自動生成Android應用回調序列的方法,其特征在于含有以下步驟:步驟1、搭建Android回調信息庫;步驟2、以Android應用的smali類型源碼為輸入,進行函數-回調映射預處理;步驟3、根據生命周期時序關系,生成生命周期回調序列;步驟4、識別注冊或釋放注冊動作的關鍵連接點,生成由注冊或釋放注冊引起的非生命周期回調序列;步驟5、識別Activity跳轉及Service跳轉動作的關鍵連接點,生成跳轉鏈接;步驟6、生成由Activity跳轉和Service跳轉引起的非生命周期回調序列。2.根據權利要求1所述的基于回調函數建模自動生成Android應用回調序列的方法,其特征在于步驟1所述的Android回調信息庫包含白名單集、注冊關系集、釋放注冊關系集、組件間跳轉函數集和回調函數集。3.根據權利要求1所述的基于回調函數建模自動生成Android應用回調序列的方法,其特征在于步驟2所述的進行函數-回調映射預處理的算法方法是,首先遍歷由無用代碼所構成的白名單之外的有效函數定義,標記每個函數的前驅與后繼,識別搜索到的函數是否為回調函數,得到回調函數集合callbackSet以及被標記的開發者自定義的非回調函數集合funSignedSet;之后基于這兩個集合,以每一個回調函數作為調用者,即前驅函數,依次搜索被調用者,即后繼非回調函數,并且迭代搜索后繼,直到沒有后繼的非回調函數,在遍歷過程中,記錄該初始回調函數和整個搜索調用順序從而生成函數-回調映射列表的一條記錄,該列表反映每一對非回調函數與其相應的回調入口的映射關系。4.根據權利要求3所述的基于回調函數建模自動生成Android應用回調序列的方法,其特征在于步驟3所述的生成生命周期回調序列,以組件類型及組件源碼作為輸入,其中組件類型集合為{activity,service,receiver,other},首先為每一個組件添加三個輔助節點onActiveStart,onActiveEnd以及onTerminal,用于標識組件的如下狀態:運行開始,運行結束和銷毀結束,以此來顯式限定組件的活動域以及跳轉時機;然后生成對應組件類型的完備生命周期圖ELG;之后在步驟2得到的callbackSet集合中識別類型為生命周期回調函數的元素,這些元素再添加上onActiveStart,onActiveEnd以及onTerminal三個輔助節點構成被實現的生命周期回調函數節點(lifeNodes),以ELG中所有節點為全集,求lifeNodes的補集得到未被實現...
【專利技術屬性】
技術研發人員:許靜,過辰楷,劉奧,朱靜雯,康介恢,
申請(專利權)人:南開大學,
類型:發明
國別省市:天津,12
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。