欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法與流程

文檔序號:12720932閱讀:來源:國知局

技術(shù)特征:

1.一種基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于含有以下步驟:

步驟1、搭建Android回調(diào)信息庫;

步驟2、以Android應(yīng)用的smali類型源碼為輸入,進(jìn)行函數(shù)-回調(diào)映射預(yù)處理;

步驟3、根據(jù)生命周期時序關(guān)系,生成生命周期回調(diào)序列;

步驟4、識別注冊或釋放注冊動作的關(guān)鍵連接點(diǎn),生成由注冊或釋放注冊引起的非生命周期回調(diào)序列;

步驟5、識別Activity跳轉(zhuǎn)及Service跳轉(zhuǎn)動作的關(guān)鍵連接點(diǎn),生成跳轉(zhuǎn)鏈接;

步驟6、生成由Activity跳轉(zhuǎn)和Service跳轉(zhuǎn)引起的非生命周期回調(diào)序列。

2.根據(jù)權(quán)利要求1所述的基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于步驟1所述的Android回調(diào)信息庫包含白名單集、注冊關(guān)系集、釋放注冊關(guān)系集、組件間跳轉(zhuǎn)函數(shù)集和回調(diào)函數(shù)集。

3.根據(jù)權(quán)利要求1所述的基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于步驟2所述的進(jìn)行函數(shù)-回調(diào)映射預(yù)處理的算法方法是,首先遍歷由無用代碼所構(gòu)成的白名單之外的有效函數(shù)定義,標(biāo)記每個函數(shù)的前驅(qū)與后繼,識別搜索到的函數(shù)是否為回調(diào)函數(shù),得到回調(diào)函數(shù)集合callbackSet以及被標(biāo)記的開發(fā)者自定義的非回調(diào)函數(shù)集合funSignedSet;之后基于這兩個集合,以每一個回調(diào)函數(shù)作為調(diào)用者,即前驅(qū)函數(shù),依次搜索被調(diào)用者,即后繼非回調(diào)函數(shù),并且迭代搜索后繼,直到?jīng)]有后繼的非回調(diào)函數(shù),在遍歷過程中,記錄該初始回調(diào)函數(shù)和整個搜索調(diào)用順序從而生成函數(shù)-回調(diào)映射列表的一條記錄,該列表反映每一對非回調(diào)函數(shù)與其相應(yīng)的回調(diào)入口的映射關(guān)系。

4.根據(jù)權(quán)利要求3所述的基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于步驟3所述的生成生命周期回調(diào)序列,以組件類型及組件源碼作為輸入,其中組件類型集合為{activity,service,receiver,other},首先為每一個組件添加三個輔助節(jié)點(diǎn)onActiveStart,onActiveEnd以及onTerminal,用于標(biāo)識組件的如下狀態(tài):運(yùn)行開始,運(yùn)行結(jié)束和銷毀結(jié)束,以此來顯式限定組件的活動域以及跳轉(zhuǎn)時機(jī);然后生成對應(yīng)組件類型的完備生命周期圖ELG;之后在步驟2得到的callbackSet集合中識別類型為生命周期回調(diào)函數(shù)的元素,這些元素再添加上onActiveStart,onActiveEnd以及onTerminal三個輔助節(jié)點(diǎn)構(gòu)成被實(shí)現(xiàn)的生命周期回調(diào)函數(shù)節(jié)點(diǎn)(lifeNodes),以ELG中所有節(jié)點(diǎn)為全集,求lifeNodes的補(bǔ)集得到未被實(shí)現(xiàn)的生命周期回調(diào)函數(shù)隱藏節(jié)點(diǎn)(hiddenNodes);最后對每一個hiddenNode,將其父親節(jié)點(diǎn)與子節(jié)點(diǎn)相連,即生成父節(jié)點(diǎn)->子節(jié)點(diǎn)的序列,并刪除與該hiddenNode相關(guān)的序列,最終獲得的ELG即為生命周期串行回調(diào)序列。

5.根據(jù)權(quán)利要求1所述的基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于步驟4所述的生成由注冊或釋放注冊引起的非生命周期回調(diào)序列,首先識別由注冊或釋放注冊動作的關(guān)鍵連接點(diǎn),即關(guān)鍵連接函數(shù)的調(diào)用語句,關(guān)鍵連接函數(shù)集合定義在Android回調(diào)信息庫中;以函數(shù)-回調(diào)映射列表為輔助來獲取該連接點(diǎn)的前驅(qū)回調(diào)函數(shù);通過識別關(guān)鍵連接函數(shù)的參數(shù)獲取后繼節(jié)點(diǎn)集;對于每一組前驅(qū)和后繼的注冊回調(diào)關(guān)系,為lifecycle->non-lifecycle關(guān)系生成onActiveStart->invokee->onActiveEnd串行回調(diào)序列,其中invokee為被注冊的后繼回調(diào),為non-lifecycle->non-lifecycle關(guān)系生成invoker->invokee->onActiveEnd串行回調(diào)序列,其中invoker是前驅(qū)節(jié)點(diǎn)。

6.根據(jù)權(quán)利要求1所述的基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于步驟5所述的生成跳轉(zhuǎn)鏈接,首先識別Activity跳轉(zhuǎn)動作和Service跳轉(zhuǎn)動作的關(guān)鍵連接點(diǎn);為每一個關(guān)鍵連接點(diǎn)生成跳轉(zhuǎn)鏈接,所述跳轉(zhuǎn)鏈接包含鏈接類型、關(guān)鍵連接點(diǎn)前驅(qū)回調(diào)invoker、連接點(diǎn)所在組件,即前驅(qū)組件A及其類型、轉(zhuǎn)到的目的組件,即后繼組件B及其類型七個屬性,其中鏈接類型集合為{connection_activity,connection_service,connection_stop_service}。

7.根據(jù)權(quán)利要求1所述的基于回調(diào)函數(shù)建模自動生成Android應(yīng)用回調(diào)序列的方法,其特征在于步驟6所述的生成由Activity跳轉(zhuǎn)和Service跳轉(zhuǎn)引起的非生命周期回調(diào)序列,以步驟5生成的跳轉(zhuǎn)鏈接為輸入,為connection_activity類型的跳轉(zhuǎn)鏈接生成A.onActiveEnd->B.init和B.onTerminal->A.onActiveStart的串行回調(diào)序列;為connection_service類型鏈接生成A.invoker->B.init的并行回調(diào)序列;為connection_stop_service類型鏈接生成B.onTerminal->A.的并行回調(diào)序列。

當(dāng)前第2頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
庄河市| 伊吾县| 肃宁县| 饶阳县| 马山县| 英吉沙县| 苗栗市| 抚顺市| 伽师县| 和田市| 龙南县| 娄烦县| 洪洞县| 安岳县| 育儿| 大宁县| 罗源县| 湘乡市| 竹山县| 临澧县| 铅山县| 南昌县| 神农架林区| 政和县| 惠东县| 马边| 靖边县| 吐鲁番市| 隆回县| 高州市| 长葛市| 册亨县| 天镇县| 馆陶县| 沂水县| 湘潭市| 安国市| 嘉黎县| 武陟县| 沐川县| 永和县|