• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>
    當前位置: 首頁 > 專利查詢>南開大學專利>正文

    一種基于回調函數建模自動生成Android應用回調序列的方法技術

    技術編號:15691357 閱讀:70 留言:0更新日期:2017-06-24 04:29
    本發明專利技術公開了一種基于回調函數建模自動生成Android應用回調序列的方法,該方法考慮了生命周期回調函數,GUI回調函數和系統驅動回調函數,在預先設計并搭建好的Android回調信息庫基礎上,對源程序進行函數?回調映射預處理從而獲取到回調集,非回調集和函數?回調映射列表等建模所需基礎數據,對應用組件內部的生命周期回調關系、注冊關系和組件間的跳轉關系進行了統一抽象并生成回調序列模型。本發明專利技術的這種基于回調函數建模自動生成Android應用回調序列的方法,建模全面統一,執行速度快,經過實踐證明是可信的。可用于Android平臺上應用程序的靜態分析和內部回調建模領域。

    Method for automatically generating Android application callback sequence based on callback function modeling

    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系統的一項主要特性,在分析和測試移動應用的過程中占據關鍵地位。以此為基礎的回調函數序列提取技術彌補了傳統程序分析方法的不足。與傳統方法不同,回調函數序列不再考慮程序的控制流或數據流,而是關注事件序列的發生和相關特征的更新處理。因此,回調函數序列能夠解決由事件不確定性引起的邏輯問題,如事件異常,回調函數序列違法等,而這些問題利用傳統的分析技術是難以解決的。2)現有的回調函數序列的處理工作僅僅是目標導向。即針對特殊問題構建特定的回調序列,所生成的序列往往是粗粒度、不可移植且不完備的。片面構建方法的缺陷主要表現在兩方面:一是沒有對生命周期回調,GUI(GraphicUserInterface)回調,系統驅動回調,組件間關系進行統一構建。其原因是難以找到一個統一的序列模式。例如,檢測一些控件的變化狀態必須要處理其在不同組件間的傳遞關系,控件的變化與組件間的傳遞動作二者難以統一,一個不完備的模型序列使得分析的結果易于出錯。二是不同類型的邏輯缺陷往往存在于同一程序塊中。當前的部分構建方法無法利用一種通用的方法加以處理,從而嚴重限制了其實用性。另外,部分構建也使得所構建的序列模型難以運用到其他場景。
    技術實現思路
    本專利技術旨在使用靜態分析的方法,為Android平臺上的應用建立一種統一的回調序列模型,即提供一種基于回調函數建模自動生成Android應用回調序列的方法。該方法考慮了生命周期回調函數,GUI回調函數和系統驅動回調函數,它不僅對生命周期回調關系、注冊關系這兩種主要的應用組件內部的回調關系進行統一抽象生成回調序列,更重要的是關注了不同類型組件之間的跳轉回調關系,生成組件跳轉回調序列,從而提供完備的細粒度回調信息,便于分析各類相關的時序屬性,比如權限使用屬性等。本專利技術提供的基于回調函數建模自動生成Android應用回調序列的方法包含以下步驟:步驟1、搭建Android回調信息庫;步驟2、以Android應用的smali類型源碼為輸入,進行函數-回調映射預處理;步驟3、根據生命周期時序關系,生成生命周期回調序列;步驟4、識別注冊或釋放注冊動作的關鍵連接點,生成由注冊或釋放注冊引起的非生命周期回調序列;步驟5、識別Activity跳轉及Service跳轉動作的關鍵連接點,生成跳轉鏈接;步驟6、生成由Activity跳轉和Service跳轉引起的非生命周期回調序列。本專利技術的具體設計實現如下:1.搭建Android回調信息庫該庫記錄了該專利技術中用到的Android信息集合,待分析的Android應用中包含的相關集合均為該庫中相應集合的子集。依據Android平臺中回調函數庫的基礎信息,構建Android回調信息庫中的以下集合:(1)白名單集:每個元素包含無用代碼所在的Android本地庫及其他依賴庫文件的名稱及其他相關屬性。(2)注冊關系集:每個元素包含注冊關系的關鍵連接點及其他相關屬性。(3)釋放注冊關系集:每個元素包含釋放關系的關鍵連接點名稱及其他相關屬性。(4)組件間跳轉函數集:每個元素包含Activity跳轉或Service跳轉的關鍵連接點名稱及其他相關屬性。(5)回調函數集:每個元素包含回調函數名,回調函數類型,所屬類名及其他相關屬性。該庫可以根據需要擴充,其中每個集合可根據需要添加或刪除元素,任一元素的屬性也可以根據需要更改。2.函數-回調映射預處理在Android回調信息庫的基礎上,要對輸入的Android應用的smali代碼進行函數回調映射預處理,獲取到回調函數集合callbackSet,非回調函數集合funSignedSet和反映每一對非回調函數與其相應的回調入口的映射關系的函數-回調映射列表。初始化回調函數集callbackSet和開發者自定義的非回調函數集funSignedSet為空集。過濾掉白名單下的所有無用代碼,對整個應用的有效代碼中的所有函數進行遍歷。每遍歷到一個函數定義,就標記這個函數的前驅函數和后繼函數,并對該函數進行分類標記,分類標記方法是:查看該函數的名稱是否出現在Android回調信息庫中回調函數集中,如果出現,則為callbackSet添加新元素,包含函數名,所屬類名,參數描述,前驅函數,后繼函數,所屬組件類型,回調函數類型七個屬性。組件類型集合為{activity,service,receiver,other};回調函數類型集合為{lifecycle,GUI,System-driven}分別表示生命周期回調函數,用戶界面交互回調和系統驅動回調。如果該函數名稱未出現在Android回調信息庫總的回調函數集中,則為funSignedSet添加新元素包含函數名,所屬類名,參數描述,前驅函數,后繼函數,所屬組件類型六個屬性。基于這兩個集合,以每一個回調函數作為調用者,即前驅函數,依次搜索被調用者,即后繼非回調函數,并且迭代搜索后繼,直到沒有后繼的非回調函數,在遍歷過程中,記錄該初始回調函數整個搜索調用順序來生成函數-回調映射列表中的一條記錄,該列表反映每一對非回調函數與其相應的回調入口的映射關系;若該回調函數沒有后繼的非回調函數,則不生成記錄。3.生成生命周期回調序列以組件類型及組件源碼作為輸入,生成生命周期回調序列,生成過程涉及四個步驟:(1)對一組件C,在Android回調信息庫中找出組件類型與C的類型一樣的全部生命周期回調函數,生成C的全生命周期回調集合C.lifecycle,為C.lifecycle添加三個并不是真實存在的輔助回調函數節點onActiveStart,onActiveEnd以及onTerminal,用于標識組件的如下狀態:運行開始,運行結束和銷毀結束,以此來顯式限定組件的活動域以及跳轉時機。(2)生成C的對應組件類型的完備生命周期序列圖(ELG)。若C為activity,生成串行回調序列C.init->C.onCreate、C.onCreate->C.onStart、C.onStart->C.onResume、C.onPaus本文檔來自技高網
    ...
    一種基于回調函數建模自動生成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

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 久久精品无码一区二区无码| 国产亚洲大尺度无码无码专线| 亚洲AV日韩AV永久无码绿巨人 | 国产热の有码热の无码视频| 国产精品无码无在线观看| 亚洲AV无码成人精品区在线观看| 亚洲国产成人无码AV在线| 亚洲AV无码不卡在线观看下载 | 蜜色欲多人AV久久无码| 亚洲精品无码鲁网中文电影| 亚洲午夜无码毛片av久久京东热| 国产精品无码素人福利| 亚洲人片在线观看天堂无码| 亚洲AV日韩AV永久无码下载| 无码人妻AⅤ一区二区三区水密桃| 免费无码VA一区二区三区| 国产网红主播无码精品 | 日本精品无码一区二区三区久久久| 一本色道无码道在线观看| 国产精品无码一区二区三区免费| 精品无码国产一区二区三区AV| 办公室丝袜激情无码播放| 日韩乱码人妻无码中文字幕视频| 日韩精品无码中文字幕一区二区| 国产成人无码免费网站| 国产午夜鲁丝片AV无码| 亚洲AV成人无码网站| 亚洲精品av无码喷奶水糖心| 日韩精品无码一区二区三区不卡| 亚洲一区AV无码少妇电影☆| 国产精品无码一区二区在线观一| 久久久久亚洲精品无码网址色欲| 亚洲成在人线在线播放无码| 久久久久久无码Av成人影院| 无码av免费一区二区三区| 色欲狠狠躁天天躁无码中文字幕| 亚洲国产精品无码一线岛国| 无码少妇一区二区三区浪潮AV| 性无码专区无码片| 日韩国产成人无码av毛片| 久久精品亚洲中文字幕无码麻豆|