新四季網

一種Android系統中程序行為與界面操作映射方法

2023-05-28 19:25:26 1

一種Android系統中程序行為與界面操作映射方法
【專利摘要】本發明涉及一種Android系統中程序行為與界面操作映射方法,其步驟包括:1)程序UI動態探測;2)程序行為靜態探測;3)根據Activity調用圖和觸發Activity組件,找出主Activity到所述觸發Activity結點的路徑,輸出該路徑的界面操作信息,完成映射。本發明用動態探測的方法獲取所有可能的界面跳轉關係及所需要的界面操作信息,然後用靜態分析的方法分析出與程序行為相關聯的界面,因此,就可以從動態探測出的界面跳轉關係中知道觸發行為所需要經過的界面執行路徑,以及執行這些路徑所需要的界面操作信息,實現程序行為與界面操作的映射。
【專利說明】一種Android系統中程序行為與界面操作映射方法
【技術領域】
[0001]本發明涉及一種Android軟體的映射方法,特別涉及一種Android系統中程序行為與界面操作的映射方法,屬於軟體分析與測試領域。
【背景技術】
[0002]隨著智慧型手機的快速發展和普及,移動網際網路已經通過大量的應用軟體改變了人們在娛樂、社交和工作等方面的方式。Android系統的智慧型手機在移動網際網路市場中佔據了大量的市場份額,根據EnfoDesk易觀智庫的報告發布的《2011年第4季度中國移動終端市場季度監測》調研數據顯示,2011年第四季中國市場Android系產品市場份額佔整體智能機市場的68.4%。這最近一年中,Android應用軟體數量以驚人的速度增長。據Google官方數據,Android應用軟體下載量從2011年3月時的30億增長到2011年12月時的100億。此外,Google官方電子市場中的Android應用軟體數量已於2012年3月初增長到45萬。由於Android系統的開放性,使得除Google官方電子市場外還存在許多第三方的電子市場,例如AmazonAppstore和Samsung Apps,特別是在中國地區,第三方的電子市場數量多達100多家。
[0003]Android系統為用戶提供了友好的W,但這些n會給開發者在軟體測試時帶來困難,自動化測試比較麻煩。另外,有些開發者把n引入到他們編寫的Android惡意軟體中去,利用UI來躲避現在的Android惡意軟體檢測技術。例如:一個Android軟體需要用戶對某個界面上的特定按鈕點擊後才能觸發某個行為。因此,無論是在測試還是安全檢測方面,都很難自動化地點擊到正確的按鈕以此來觸發出行為。在Andro i d系統中,Act iVi ty是一個系統組件,用來顯示每個界面的內容,並且讓用戶與之交互。目前,Android白盒測試技術,僅僅只能自動化地對當前Activity中的所有元素進行遍歷,當需要測試由某個特定Activity中的n控制項所觸發的行為時,需要測試人員手工編寫測試腳本來完成。同樣地,在Android軟體惡意行為檢測技術上,自動化地操作n控制項來觸發相應的惡意行為也尤為困難,一個簡單做法是生成隨機用戶事件來操作界面,但效率不到40%。這些困難的根本原因是,由於n操作邏輯的複雜性,很難將程序行為映射到界面操作上去。
[0004]面對當前大量的Android軟體,無論是在軟體測試,還是在惡意軟體檢測領域,都非常有必要設計出一種Android軟體的程序行為與界面操作的自動映射方法,來解決自動化軟體測試和自動化惡意軟體檢測中的難題。

【發明內容】

[0005]鑑於以上的問題,本發明的目的是提供一種Android軟體的程序行為與界面操作的映射方法,程序行為是需要界面操作來完成的。融合動態和靜態分析技術,將程序行為自動化地映射到其對應的界面操作信息。
[0006]本發明是通過動態遍歷的方法得到所有Activity的調用關係,以及Activity調用所需的用戶操作信息。然後通過靜態分析方法找到程序行為所對應的API,進一步逆向搜索函數調用關係獲取可能的程序執行路徑,針對每個執行路徑,分析得到觸發Activity。最後,我們在所有Activity的調用關係裡找出可到達觸發Activity的路徑,因此我們能得到觸發程序行為所需要的界面操作信息。
[0007]本發明提出一種Android系統中程序行為與界面操作映射方法,其步驟包括:
[0008]I)程序UI動態探測;
[0009]1-1)啟動Android系統中待測軟體,遍歷該軟體的一個主Activity組件上每個用戶界面UI元素,保存並維持當前系統內存狀態;
[0010]1-2)遍歷該軟體上所有Activity組件並記錄Activity組件之間跳轉關係和用戶操作信息,反覆此步驟;
[0011]1-3)根據遍歷的所有Activity組件,以每個Activity為結點、每個具有Activity跳轉關係和用戶操作信息作為邊,建立Activity調用圖;
[0012]1-4)輸出Activity調用圖對應的界面操作信息;
[0013]2 )程序UI靜態探測;
[0014]2-1)對待測軟體進行反彙編;
[0015]2-2)根據反彙編提取用戶指定程序行為所對應的API函數調用路徑;
[0016]2-3)從路徑中提取出觸發Activity組件,輸出觸發Activity組件所對應的界面操作信息;
[0017]3)根據Activity調用圖和觸發Activity組件,找出主Activity到所述觸發Activity結點的路徑,輸出該路徑的界面操作信息,完成映射。
[0018]遍歷所述UI元素時,若觸發新的Activity啟動,則該Activity組件遍歷結束後恢復系統內存。
[0019]遍歷所述Activity組件時,產生新Activity,保存當前系統內存。
[0020]所述的保存當前系統內存狀態,可通過dump方式把模擬器中的內存dump後寫入到文件中,所述恢復系統內存,將內存dump文件重新加載到模擬器中。
[0021]所述遍歷Activity組件上每個用戶界面UI元素方法是:通過遍歷當前Activity中的UI樹,得到每個n元素;再根據UI元素的類型,執行不同類型的用戶操作。
[0022]所述反彙編使用APK工具得到待測軟體的smali代碼或Dalvik代碼。
[0023]更進一步,所述的UI元素包括按鈕、視圖、適配器視圖和組合按鈕。
[0024]更進一步,所述用戶操作信息包括:UI信息和用戶操作類型;所述UI信息是指被操作的n元素的坐標以及n類型;所述用戶操作類型,指上一次操作時的用戶事件函數類型。
[0025]更進一步,所述從路徑中提取出觸發Activity組件的方法為:分析出所有可能執行到該API的函數調用路徑,對每條路徑上第一個函數進行分析,找出觸發Activity。
[0026]更進一步,所述Activity組件之間跳轉關係根據一個Activity結點跳轉到另一個Activity結點及該兩結點之間的邊關係來決定。
[0027]與現有技術相比,本發明的積極效果為:
[0028]本發明能夠自動化地獲取與某一個行為對應的界面操作信息,現有的技術只能人工手動地去分析後得到,或者通過成功率很低的隨機測試方法來得到。本發明用動態探測的方法獲取所有可能的界面跳轉關係及所需要的界面操作信息,然後用靜態分析的方法分析出與程序行為相關聯的界面,因此,就可以從動態探測出的界面跳轉關係中知道觸發行為所需要經過的界面執行路徑,以及執行這些路徑所需要的界面操作信息。本發明為現有的Android軟體測試技術和Android惡意軟體檢測技術提供了有力的支持。
【專利附圖】

【附圖說明】
[0029]圖1是本發明Android系統中程序行為與界面操作映射方法的架構圖;
[0030]圖2Android系統中程序行為與界面操作映射方法動態探測方法的邏輯流程圖;
[0031]圖3Android系統中程序行為與界面操作映射方法動態探測方法靜態分析方法的邏輯流程圖;
[0032]圖4Android系統中程序行為與界面操作映射方法動態探測方法生成界面操作信息的邏輯流程圖。
【具體實施方式】
[0033]本發明可至少包含三個部分:通過動態探測方法構造的動態探測器、通過靜態探測方法構造的靜態分析器和基於界面操作信息的界面操作信息生成器。動態探測器主要負責提取Activity之間的跳轉關係和所需的用戶操作信息。它在每個Activity上操作其所有的UI元素,若當前Activity跳轉到另一個Activity,則能得到這兩個Activity之間的跳轉關係,以及產生這個跳轉的界面操作信息。當動態遍歷完所有的Activity之後,就能得到Activity調用圖。靜態分析器主要是對Android軟體進行反彙編後,獲取程序行為所對應API的函數調用路徑,每個函數調用路徑上的第一個函數所屬的Activity就是觸發Activity。界面操作信息生成器在Activity調用圖中選取所有從主Activity到觸發Activity的Activity調用路徑,輸出每條路徑及執行該路徑所需要的用戶操作信息。
[0034]以下參照附圖對一種Android程序行為與界面操作自動映射方法及系統進行詳細說明,但本發明不局限於下面的實施方式。
[0035]本發明的整體架構如圖1所示,本發明從結構上主要包含三個部分:動態探測器、靜態分析器和界面操作信息生成器。動態探測器是基於Android模擬器的,它修改了模擬器底層的代碼,可以遍歷和操作當前Activity中的每個n元素。在動態探測器中安裝Android軟體並且只啟動,然後開始遍歷所有的Activity。為了節省遍歷的時間開銷,動態探測器會在開始遍歷當前Activity的所有n元素之前都會先保存內存狀態,若操作一個UI元素後啟動了新的Activity,則會將之前保存的內存恢復,接著操作下一個n元素。最後,動態探測器將所分析到的所有Activity調用圖發送給界面操作信息生成器。靜態分析器利用APKtool工具將Android應用軟體的APK文件反彙編後得到smali代碼,然後從smali代碼中找到與用戶指定程序行為所對應的API,分析出所有可能執行到該API的函數調用路徑。接著,對每條路徑上的第一個函數進行分析,找出它所屬於的Activity,即為觸發Activity,並也發送給界面操作信息生成器。界面操作信息生成器從在Activity調用圖中提取出從主Activity到觸發Activity的所有Activity調用路徑,最後輸出這些調用路徑,以及這些路徑所代表的界面操作信息。
[0036]動態探測器的工作流程如圖2所示,首先安裝我們要測試或檢測的Android軟體並啟動運行。然後,保存當前內存狀態,即把當前系統內存dump到指定文件中去。接著取當前Activity的UI樹,對UI樹中的每個UI元素進行操作,執行它的所有用戶事件函數。當操作完所有的UI元素後,並且發現已經遍歷完所有Activity,動態探測器會停止探測,且輸出Activity調用圖到指定文件中。如果在操作完所有n元素後且還未遍歷完所有Activity,動態探測器會啟動下一個Activity,接著按同樣方法繼續分析。當對UI元素進行操作時,發現有新的Activity生成,則記錄下當前執行的用戶操作信息,包括UI元素的坐標和用戶操作類型,然後對內存狀態進行恢復後操作下一個UI元素。
[0037]靜態分析器的工作流程如圖3所示,首先將Android軟體進行反彙編後得到smali代碼或者Dalvik代碼,然後根據用戶指定的程序行為找出所對應的API。為了得到執行該API所需經過的函數調用路徑,我們在smali代碼中提取出所有函數調用,然後再利用遞歸的方法找出該API的函數調用路徑。對API的函數調用路徑中的第一個函數進行分析,若其屬於一個Activity的成員函數,那麼這個Activity就為觸發Activity。若其屬於一個控制項的事件函數,貝1J分析該控制項所綁定的Activity,即為觸發Activity。最後,將觸發Activity列表輸出到指定文件中去。
[0038]界面操作信息生成器的工作流程如圖4所示,首先從指定的文件中讀取Activity調用圖和觸發Activity,然後應用圖搜索算法(例如深度優先搜索算法),在Activity調用圖中找出從主Activity到觸發Activity的所有Activity調用路徑。最後,把這些Activity調用路徑上所代表的界面操作信息輸出。
[0039]儘管為說明目的公開了本發明的具體實施例和附圖,但是本領域的技術人員可以理解:在不脫離本發明及所附的權利要求的精神和範圍內,各種替換、變化和修改都是可能的。本發明不應局限於本說明書最佳實施例和附圖所公開的內容,本發明要求保護的範圍以權利要求書界定的範圍為準。
【權利要求】
1.一種Android系統中程序行為與界面操作映射方法,其步驟包括: 1)程序Π動態探測; 1-1)啟動Android系統中待測軟體,遍歷該軟體的一個主Activity組件上每個用戶界面UI元素,保存並維持當前系統內存狀態; 1-2)遍歷該軟體上所有Activity組件並記錄Activity組件之間跳轉關係和用戶操作信息,反覆此步驟; 1-3)根據遍歷的所有Activity組件,以每個Activity為結點、每個具有Activity跳轉關係和用戶操作信息作為邊,建立Activity調用圖; 1-4)輸出Activity調用圖對應的界面操作信息; 2)程序UI靜態探測; 2-1)對待測軟體進行反彙編; 2-2)根據反彙編提取用戶指定程序行為所對應的API函數調用路徑; 2-3)從路徑中提取出觸發Activity組件,輸出觸發Activity組件所對應的界面操作信息;
3)根據Activity調用圖和觸發Activity組件,找出主Activity到所述觸發Activity結點的路徑,輸出該路徑的界面操作信息,完成映射。
2.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,遍歷所述UI元素時,若觸發新的Activity啟動,則該Activity組件遍歷結束後恢復系統內存。
3.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,遍歷所述Activity組件時,產生新Activity,保存當前系統內存。
4.如權利要求2或3所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述的保存當前系統內存狀態,可通過dump方式把模擬器中的內存dump後寫入到文件中,所述恢復系統內存是指將內存dump文件重新加載到模擬器中。
5.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述遍歷Activity組件上每個用戶界面UI元素方法是:通過遍歷當前Activity中的UI樹,得到每個Π元素;再根據UI元素的類型,執行不同類型的用戶操作。
6.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述反彙編使用APK工具得到待測軟體的smali代碼或Dalvik代碼。
7.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述的UI元素包括按鈕、視圖、適配器視圖和組合按鈕。
8.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述用戶操作信息包括=UI信息和用戶操作類型;所述UI信息是指被操作的UI元素的坐標以及Π類型;所述用戶操作類型,指上一次操作時的用戶事件函數類型。
9.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述從路徑中提取出觸發Activity組件的方法為:分析出所有可能執行到該API的函數調用路徑,對每條路徑上第一個函數進行分析,找出觸發Activity。
10.如權利要求1所述的Android系統中程序行為與界面操作映射方法,其特徵在於,所述Activity組件之間跳轉關係根據一個Activity結點跳轉到另一個Activity結點及該兩結點之間的邊關係來決 定。
【文檔編號】G06F11/36GK103530221SQ201210228718
【公開日】2014年1月22日 申請日期:2012年7月2日 優先權日:2012年7月2日
【發明者】鄭聰, 朱詩雄, 龔曉銳, 丁羽, 戴帥夫, 鄒維 申請人:北京大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀