包括”是指存在所述特征、整數、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“親接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關聯的列出項的全部或任一單元和全部組合。
[0051]本技術領域技術人員可以理解,除非另外定義,這里使用的所有術語(包括技術術語和科學術語),具有與本發明所屬領域中的普通技術人員的一般理解相同的意義。還應該理解的是,諸如通用字典中定義的那些術語,應該被理解為具有與現有技術的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
[0052]本技術領域技術人員可以理解,這里所使用的“終端”、“終端設備”既包括無線信號接收器的設備,其僅具備無發射能力的無線信號接收器的設備,又包括接收和發射硬件的設備,其具有能夠在雙向通信鏈路上,執行雙向通信的接收和發射硬件的設備。這種設備可以包括:蜂窩或其他通信設備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示器的蜂窩或其他通信設備;PCS(Personal Communicat1ns Service,個人通信系統),其可以組合語音、數據處理、傳真和/或數據通信能力;PDA(Personal Digital Assistant,個人數字助理),其可以包括射頻接收器、尋呼機、互聯網/內聯網訪問、網絡瀏覽器、記事本、日歷和/或GPS(Global Posit1ning System,全球定位系統)接收器;常規膝上型和/或掌上型計算機或其他設備,其具有和/或包括射頻接收器的常規膝上型和/或掌上型計算機或其他設備。這里所使用的“終端”、“終端設備”可以是便攜式、可運輸、安裝在交通工具(航空、海運和/或陸地)中的,或者適合于和/或配置為在本地運行,和/或以分布形式,運行在地球和/或空間的任何其他位置運行。這里所使用的“終端”、“終端設備”還可以是通信終端、上網終端、音樂/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動互聯網設備)和/或具有音樂/視頻播放功能的移動電話,也可以是智能電視、機頂盒等設備。
[0053]本技術領域技術人員可以理解,這里所使用的遠端網絡設備,其包括但不限于計算機、網絡主機、單個網絡服務器、多個網絡服務器集或多個服務器構成的云。在此,云由基于云計算(Cloud Computing)的大量計算機或網絡服務器構成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機集組成的一個超級虛擬計算機。本發明的實施例中,遠端網絡設備、終端設備與WNS服務器之間可通過任何通信方式實現通信,包括但不限于,基于3GPP、LTE、WMAX的移動通信、基于TCP/IP、UDP協議的計算機網絡通信以及基于藍牙、紅外傳輸標準的近距無線傳輸方式。
[0054]需要指出的是,本發明的技術方案,理念上與操作系統的選型無關,對于windows、android、1S等操作系統均適用。但為說明的便利,以下將主要以Android為例進行說明。
[0055]如圖1所示,本發明提供的一種應用的測試方法,包括以下步驟:
[0056]S11、獲取待測試的應用的所有數據文件的格式,這里的數據文件是應用的安裝目錄下的所有的數據文件,要獲取應用的數據文件的格式(例如xml、jSOn、deX等數據文件),首先確定應用的安裝目錄,然后根據安裝目錄找到應用的所有的數據文件,并進行掃描獲取;這里安裝目錄基本上是確定的,例如一個apk(Android Package)安裝后的安裝目錄為/data/data/apk包名,這是最常見的應用軟件的數據存儲目錄,但是另外,有些應用會不遵循andoird的默認規則,在/sdcard/data/apk包名(內存卡)上創建一個隨意的目錄進行數據存儲。
[0057]S12、至少根據所述數據文件的格式確定與之匹配的滲透策略;
[0058]在一些實施方式中,滲透策略包括通用滲透策略和專項滲透策略,通用滲透策略用于不需要進行完整性驗證的數據文件,專用滲透策略用于需要進行完整性驗證的數據文件。
[0059]因為不同的滲透策略導致的應用出現的問題是不一樣的,例如一個簡單的例子,如果在應用運行時某些數據文件要進行完整性驗證,那么這時如果采用通用滲透策略對內容做任意的置空、或者刪除等篡改時,導致的問題就可能都是一樣的,也就是在完整性驗證的第一步就失敗了,對該數據文件的其它篡改內容的測試就無法進行了,從而就不能夠有效的監測出其它的可能存在的漏洞與缺陷了;因此,針對這種需要進行完整性驗證的數據文件我們就不能采用通用滲透策略,而是具體根據該數據內容的格式具體制定專項滲透策略,例如,僅僅修改數據文件的某一個字段的一個值、或者是一個變量的數值的大小等,在例如,針對一個1社型的數據變量,我們可以設置填入0、1,-1,1024,1025等數值進行測試。
[0060]通用滲透策略可以將數據文件進行以下的篡改:將內容改為空、文件頭加內容、文件尾加內容、大數據填充等;
[0061 ]其中通用滲透策略中“將內容改為空”指的是:例如對360衛士需要讀取a.xml文件,那么預期是有具體文件內容的,那么我們可以將所有內容都抹掉,檢查這時候360衛士是否做了足夠的異常處理,以達到測試應用的容錯能力的目的;
[0062]通用滲透策略中“文件頭加內容、文件尾加內容”篡改的是數據文件的文件頭或者文件尾進行數據的增加,其針針對的數據文件可以是文本內容,或二進制內容;
[0063]通用滲透策略中“大數據填充”指的是可以在數據文件中直接填入0、1這樣的數據,也可以填入a-z這樣的數據,也可以是中文,具體的填充大小可以是Ik-1OOM之間任一大小的數據,例如何以填充100k、lM、或者1M等。
[0064]S13、根據所述滲透策略對所述應用的數據文件進行篡改;
[0065]S14、監控所述被篡改數據文件的應用啟動后的運行狀況;這里我們會添加一個文件監聽器,監聽/data/data/com.qihoo360.mobilesafe/crash目錄,實時監聽是否在該目錄下生成了 crash文件,因為一旦應用發生異常,會自動在該目錄下生成crash文件。
[0066]本實施方式中,通過滲透測試模擬惡意黑客的攻擊行為來針對應用軟件的不同格式的數據文件采用不同的滲透策略對相應格式的數據文件進行篡改,并且在篡改后的數據文件的基礎上再運行該應用軟件,以發現應用軟件的任何可能存在的弱點、技術缺陷或漏洞,以供應用軟件開發者根據發現的上述問題對應用軟件進行分析調試,最終增強應用軟件的穩定性與容錯能力,提升用戶體驗。
[0067]如圖2所示,在一些實施方式中,在獲取待測試的應用的數據文件的格式之前包括:
[0068]S21、統計多種應用的數據文件的格式;
[0069]S22、確定所述多種應用的數據文件的格式適合的有效滲透策略;
[0070]S23、利用所述格式和所述有效滲透策略,制定滲透策略表,所述滲透策略表至少存儲有各種數據文件的格式以及與數據文件的格式相對應的滲透策略。
[0071]這里將測試過的文件數據格式以及相應的生成的滲透策略存儲為滲透策略表,并且在歷史測試過程中不斷會有新的格式的文件數據,并生成新的專項滲透策略,把新出現的數據格式以及相應的專項滲透策略不斷的加入到滲透策略表中,這樣,不斷的完善