一種安卓應用的廣告攔截方法和裝置的制造方法
【專利摘要】本發(fā)明公開了一種安卓應用的廣告攔截方法和裝置。該方法包括:獲取指定安卓應用的安裝包并保存至指定目錄;構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行;對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。可見,在本方案中,將指定安卓應用放入沙箱中運行,通過沙箱為指定安卓應用提供一個封閉的運行環(huán)境,以實現(xiàn)對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為,給用戶提供純凈、無干擾的安卓應用使用體驗。
【專利說明】
一種安卓應用的廣告攔截方法和裝置
技術領域
[0001]本發(fā)明涉及互聯(lián)網技術領域,具體涉及一種安卓應用的廣告攔截方法和裝置。
【背景技術】
[0002]現(xiàn)有技術中大多具有安全監(jiān)控功能的軟件均是在指定時間對安卓應用的進行靜態(tài)監(jiān)控,如對安卓應用進行反編譯,將反編譯得到的代碼結果與特征庫進行比對,以判斷安卓應用中是否存在惡意代碼,該監(jiān)控過程由于特征庫的滯后而具有相當的判斷失誤率,且非動態(tài)的監(jiān)控過程很容易被惡意安卓應用的開發(fā)者規(guī)避,因此,需要一種對安卓應用的動態(tài)行為過程進行監(jiān)控的方案。
【發(fā)明內容】
[0003]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的安卓應用的廣告攔截方法和裝置。
[0004]依據本發(fā)明的一個方面,提供了一種安卓應用的廣告攔截方法,該方法包括:
[0005]獲取指定安卓應用的安裝包并保存至指定目錄;
[0006]構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行;
[0007]對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。
[0008]可選地,在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,該方法進一步包括:
[0009]解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;
[0010]是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0011 ]可選地,在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,該方法進一步包括:
[0012]接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;
[0013]對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;
[0014]是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0015]可選地,所述對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據包括:
[0016]對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。
[0017]可選地,所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0018]在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。
[0019]可選地,所述攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求包括:
[0020]攔截指定安卓應用包含的廣告插件對應的廣告插件彈窗,將攔截到的廣告插件彈窗的窗口展示屬性設置為不可見模式或隱藏模式。
[0021]可選地,所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0022]攔截指定安卓應用發(fā)送的調用Activity組件的消息,從該消息中獲取View對象;
[0023]對于獲取到的View對象,利用安卓反射機制獲取該View對象所屬的類信息和包結構,根據類信息和包結構獲取相應的包路徑,根據包路徑中每一級目錄名稱判斷該包路徑是否屬于廣告插件;
[0024]是則,阻止該消息繼續(xù)發(fā)送,否則,放行該消息。
[0025]可選地,所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0026]攔截指定安卓應用通過所述沙箱的網絡訪問接口發(fā)送的網絡訪問請求;
[0027]根據該網絡訪問請求中的URL地址判斷該網絡訪問請求是否為廣告加載請求;
[0028]是則,阻止該網絡訪問請求的繼續(xù)發(fā)送。
[0029]可選地,該方法進一步包括:
[0030]預設一個或多個備用URL地址;
[0031]在確定指定安卓應用發(fā)送的網絡訪問請求是廣告加載請求后,選擇一個備用URL地址,利用該備用URL地址替換指定安卓應用發(fā)送的網絡訪問請求中的URL地址,將修改后的網絡訪問請求通過所述沙箱的網絡訪問接口進行發(fā)送。
[0032]可選地,該方法進一步包括:
[0033]向用戶展示應用列表,將用戶選擇的應用作為指定安卓應用;
[0034]和/或,
[0035]向用戶展示廣告攔截策略列表,根據用戶選擇的廣告攔截策略,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0036]可選地,在所述獲取指定安卓應用的安裝包并保存至指定目錄之前,該方法進一步包括:
[0037]通過免ROOT方式獲取安卓系統(tǒng)權限。
[0038]可選地,所述通過免ROOT方式獲取安卓系統(tǒng)權限包括:
[0039]獲取補丁包;
[0040]通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限;
[0041]其中,所述補丁包中包括:所述將指定安卓應用的安裝包保存至指定目錄的步驟,所述構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行的步驟,以及,所述對指定安卓應用在運行過程中的行為進行監(jiān)控的步驟的執(zhí)行文件。
[0042]可選地,所述通過安裝所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限包括:
[0043]以所述補丁包替換特定系統(tǒng)應用,實現(xiàn)安卓系統(tǒng)對所述補丁包中的執(zhí)行文件的加載,使得所述補丁包中的執(zhí)行文件獲取安卓系統(tǒng)權限。
[0044]可選地,所述獲取指定安卓應用的安裝包并保存至指定目錄包括:
[0045]當指定安卓應用是已安裝應用時,從安卓系統(tǒng)的應用安裝目錄中查找指定安卓應用的安裝包,將該安裝包復制至指定目錄,卸載指定安卓應用。
[0046]可選地,所述獲取指定安卓應用的安裝包并保存至指定目錄包括:
[0047]當指定安卓應用是正在進行安裝的應用時,通過注冊默認安裝器攔截指定安卓應用的安裝廣播信息,從該安裝廣播信息中獲取指定安卓應用的安裝包,將該安裝包存放至指定目錄。
[0048]可選地,所述構造指定安卓應用運行所需要的沙箱包括:
[0049]解析指定目錄下的指定安卓應用的安裝包,獲取指定安卓應用的相關信息;
[0050]構造指定安卓應用運行所需的資源環(huán)境,以在指定安卓應用運行時調取相應的資源;
[0051]構造類加載器,以加載指定安卓應用的執(zhí)行文件中的相應類文件;
[0052]構造主線程,以使該主線程執(zhí)行指定安卓應用中的各組件的啟動操作;
[0053]為指定安卓應用中的各組件分別構造一個加載安卓應用安裝包對象。
[0054]可選地,構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行包括:
[0055]解析指定目錄下的指定安卓應用的安裝包,生成該指定安卓應用的鏡像安裝包;
[0056]在該鏡像安裝包的執(zhí)行文件中注入指示調用鉤子函數的代碼;
[0057]修改該鏡像安裝包的配置文件的配置參數,用于加載指定安卓應用;
[0058]在安卓系統(tǒng)中安裝并運行該鏡像安裝包;
[0059]其中,所述鉤子函數用于對指定安卓應用的行為進行監(jiān)控。
[0060]依據本發(fā)明的另一個方面,提供了一種安卓應用的廣告攔截裝置,該裝置包括:[0061 ]獲取單元,適于獲取指定安卓應用的安裝包并保存至指定目錄;
[0062]構造單元,適于構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行;
[0063]監(jiān)控單元,適于對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。
[0064]可選地,所述監(jiān)控單元,進一步適于解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0065]可選地,所述監(jiān)控單元,進一步適于接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;以及適于對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0066]可選地,所述監(jiān)控單元,適于對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。
[0067]可選地,所述監(jiān)控單元,適于在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。
[0068]可選地,所述監(jiān)控單元,適于攔截指定安卓應用包含的廣告插件對應的廣告插件彈窗,將攔截到的廣告插件彈窗的窗口展示屬性設置為不可見模式或隱藏模式。
[0069]可選地,所述監(jiān)控單元,適于攔截指定安卓應用發(fā)送的調用Activity組件的消息,從該消息中獲取Vi ew對象;對于獲取到的Vi ew對象,利用安卓反射機制獲取該Vi ew對象所屬的類信息和包結構,根據類信息和包結構獲取相應的包路徑,根據包路徑中每一級目錄名稱判斷該包路徑是否屬于廣告插件;是則,阻止該消息繼續(xù)發(fā)送,否則,放行該消息。
[0070]可選地,所述監(jiān)控單元,適于攔截指定安卓應用通過所述沙箱的網絡訪問接口發(fā)送的網絡訪問請求;根據該網絡訪問請求中的URL地址判斷該網絡訪問請求是否為廣告加載請求;是則,阻止該網絡訪問請求的繼續(xù)發(fā)送。
[0071 ] 可選地,所述監(jiān)控單元,進一步適于預設一個或多個備用URL地址;在確定指定安卓應用發(fā)送的網絡訪問請求是廣告加載請求后,選擇一個備用URL地址,利用該備用URL地址替換指定安卓應用發(fā)送的網絡訪問請求中的URL地址,將修改后的網絡訪問請求通過所述沙箱的網絡訪問接口進行發(fā)送。
[0072]可選地,所述獲取單元,進一步適于向用戶展示應用列表,將用戶選擇的應用作為指定安卓應用;
[0073]所述監(jiān)控單元,進一步適于向用戶展示廣告攔截策略列表,根據用戶選擇的廣告攔截策略,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0074]可選地,該裝置進一步包括:
[0075]系統(tǒng)權限獲取單元,適于在所述獲取單元執(zhí)行獲取指定安卓應用的安裝包并保存至指定目錄的步驟之前,通過免ROOT方式獲取安卓系統(tǒng)權限。
[0076]可選地,所述系統(tǒng)權限獲取單元,適于獲取補丁包,通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限;
[0077]其中,所述獲取單元、所述構造單元以及所述監(jiān)控單元通過調用所述補丁包中的執(zhí)行文件執(zhí)行相應的步驟。
[0078]可選地,所述系統(tǒng)權限獲取單元,適于以所述補丁包替換特定系統(tǒng)應用,實現(xiàn)安卓系統(tǒng)對所述補丁包中的執(zhí)行文件的加載,使得所述補丁包中的執(zhí)行文件獲取安卓系統(tǒng)權限。
[0079]可選地,所述獲取單元,適于當指定安卓應用是已安裝應用時,從安卓系統(tǒng)的應用安裝目錄中查找指定安卓應用的安裝包,將該安裝包復制至指定目錄,卸載指定安卓應用。
[0080]可選地,所述獲取單元,適于當指定安卓應用是正在進行安裝的應用時,通過注冊默認安裝器攔截指定安卓應用的安裝廣播信息,從該安裝廣播信息中獲取指定安卓應用的安裝包,將該安裝包存放至指定目錄。
[0081]可選地,所述構造單元,適于解析指定目錄下的指定安卓應用的安裝包,獲取指定安卓應用的相關信息;構造指定安卓應用運行所需的資源環(huán)境,以在指定安卓應用運行時調取相應的資源;構造類加載器,以加載指定安卓應用的執(zhí)行文件中的相應類文件;構造主線程,以使該主線程執(zhí)行指定安卓應用中的各組件的啟動操作;為指定安卓應用中的各組件分別構造一個加載安卓應用安裝包對象。
[0082]可選地,所述構造單元,適于解析指定目錄下的指定安卓應用的安裝包,生成該指定安卓應用的鏡像安裝包;在該鏡像安裝包的執(zhí)行文件中注入指示調用鉤子函數的代碼;修改該鏡像安裝包的配置文件的配置參數,用于加載指定安卓應用;在安卓系統(tǒng)中安裝并運行該鏡像安裝包;
[0083]其中,所述鉤子函數用于對指定安卓應用的行為進行監(jiān)控。。
[0084]根據本發(fā)明的技術方案,將指定安卓應用放入沙箱中運行,通過沙箱為指定安卓應用提供一個封閉的運行環(huán)境,以實現(xiàn)對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為,給用戶提供純凈、無干擾的安卓應用使用體驗。
[0085]上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0086]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0087]圖1示出了根據本發(fā)明一個實施例的一種安卓應用的廣告攔截方法的流程圖;
[0088]圖2示出了根據本發(fā)明一個實施例的一種安卓應用的廣告攔截裝置的示意圖;
[0089]圖3示出了根據本發(fā)明另一個實施例的一種安卓應用的廣告攔截裝置的示意圖。
【具體實施方式】
[0090]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0091]圖1示出了根據本發(fā)明一個實施例的一種安卓應用的廣告攔截方法的流程圖。如圖1所示,該方法包括:
[0092]步驟S110,獲取指定安卓應用的安裝包并保存至指定目錄。
[0093]步驟S120,構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行。
[0094]步驟S130,對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。
[0095]可見,圖1所示的方法將指定安卓應用放入沙箱中運行,通過沙箱為指定安卓應用提供一個封閉的運行環(huán)境,以實現(xiàn)對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為,給用戶提供純凈、無干擾的安卓應用使用體驗。
[0096]對于帶有廣告的安卓應用來說,這些安卓應用大部分是以加入廣告jar包的形式在安卓應用的安裝包中加入廣告插件,然后在安卓應用的安裝包中的配置文件AndroidManifest.xml中聲明廣告service或者在程序中執(zhí)行廣告API,廣告插件再通過網絡訪問請求去加載廣告。
[0097]基于此原理,本方案的廣告攔截策略可以分為兩種策略,一種策略是先確定指定安卓應用中是否包含廣告插件,如果包含,再通過監(jiān)控指定安卓應用的行為,對廣告插件的動作進行阻止:另一種策略是直接監(jiān)控指定安卓應用的行為,判斷監(jiān)控到的行為是否與廣告加載行為相關,是則進行阻止。
[0098]對于第一種策略,可以通過以下方式確定指定安卓應用中是否包含插件:
[0099]方式一,對于大部分包含廣告插件的安卓應用來說,具有廣告插件SDKJar包與應用程序本身所使用的包結構完全分布在兩個互相平行且完全不重疊的包結構內這一特點,利用該特點可以做到對廣告插件的精確識別。其中,SDK是指廣告插件開發(fā)廠商提供給開發(fā)者的一套便于集成的代碼包,在Ja va開發(fā)平臺上代碼包大多以Jar包的形式包裝。
[0100]則在本發(fā)明的一個實施例中,圖1所示方法在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,進一步包括:解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0101]方式二,結合云端在線查詢廣告包特征的機制,做到針對每一款不同的廣告插件都可以使用對應的特征數據進行定向攔截。在服務器端預先通過分析大量廣告插件樣本來提取到每一款廣告插件的通用特征數據,由每一款廣告插件的通用特征數據組成特征數據庫。
[0102]則在本發(fā)明的一個實施例中,圖1所示的方法在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,進一步包括:接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。具體地,對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。
[0103]經過上述兩種方式,在確定指定安卓應用中包含廣告插件后,可以執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟,具體可以包括:攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。例如,攔截指定安卓應用包含的廣告插件對應的廣告插件彈窗,將攔截到的廣告插件彈窗的窗口展示屬性設置為不可見模式(invisible)或隱藏模式(gone),可以達到不影響指定安卓應用的原始布局效果,可極大地提升廣告攔截效果和用戶體驗。
[0104]通過對廣告插件的識別數據分析發(fā)現(xiàn),存在超過半數的廣告插件開始采用使用安卓源生的內置控件來進行廣告展示,由于源生控件所屬的包結構為系統(tǒng)包,從而不能如上述第一種策略直接根據控件的包結構來直接進行識別和攔截,因此需要采用第二種策略。
[0105]對于第二種策略,可以通過以下兩種方式對指定安卓應用執(zhí)行廣告攔截:
[Ο?Ο?] 方式一,WebView和ImageView是兩種比較特殊的廣告展現(xiàn)方式,這兩種View是安卓系統(tǒng)自帶的,廣告插件只需要向里面填內容,所以僅依賴View的類信息就無法判斷是廣告(因為是安卓系統(tǒng)自帶類)。針對WebView形式和ImageView形式的的廣告插件,本方案采用反射從已經實例化的內置插件對象中動態(tài)提取展示的數據源接口 WebViewClient和點擊事件處理接口 ClickerListener,從而跳轉得到這兩類形式廣告插件的類信息和包結構。其中,內置插件對象是指這些WebView和ImageView已經被實例化后的Java對象。針對WebView對象,它有一個固定的成員類型為WebViewCl ient,針對ImageView有一個固定的內部成員ClickListener,這兩個成員都有固定的Get接口可以獲取。通過Java的GetClass反射接口可以獲取一個View對象所屬的類信息和包結構,關鍵的類信息包括類名、類加載器、包名稱。反射(Ref Iect 1n)機制是一種Java語言的特性,指可以用通用的調用接口獲取到Java對象內部的成員和方法信息。Java包路徑是一個類似多級文件夾的全路徑,可以根據多級目錄中每一級目錄的名稱是否包含一些可以收集到的廣告廠商名稱、插件產品名稱來判定這個包路徑是屬于某個廣告插件的。
[0107]在本發(fā)明的一個實施例中,所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:攔截指定安卓應用發(fā)送的調用Activity組件的消息,從該消息中獲取View對象;對于獲取到的View對象,利用安卓反射機制獲取該View對象所屬的類信息和包結構,根據類信息和包結構獲取相應的包路徑,根據包路徑中每一級目錄名稱判斷該包路徑是否屬于廣告插件;是則,阻止該消息繼續(xù)發(fā)送,否則,放行該消息。
[0108]方式二,如前文所述,廣告插件需要發(fā)送HTTP請求來進行廣告加載,而本方案為指定安卓應用構建沙箱,使得指定安卓應用在沙箱中運行,指定安卓應用所有的網絡訪問都要經由沙箱的網絡訪問API發(fā)出,因此,在本發(fā)明的一個實施例中,步驟S130中對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0109]步驟S131,攔截指定安卓應用通過所述沙箱的網絡訪問接口發(fā)送的網絡訪問請求。
[0110]具體地,可以在沙箱中設置鉤子程序,當指定安卓應用發(fā)送網絡訪問請求時,在該網絡訪問請求到達沙箱的網絡訪問接口之前,利用鉤子程序攔截該網絡訪問請求,根據該網絡訪問請求獲知對應的網絡數據流量。
[0111]步驟S132,根據該網絡訪問請求中的URL地址判斷該網絡訪問請求是否為廣告加載請求。
[0112]步驟S133,是則,阻止該網絡訪問請求的繼續(xù)發(fā)送。
[0113]步驟S134,否則,放行該網絡訪問請求。
[0114]進一步地,在本發(fā)明的一個實施例中,圖1所示的方法進一步包括:預設一個或多個備用URL地址;在確定指定安卓應用發(fā)送的網絡訪問請求是廣告加載請求后,選擇一個備用URL地址,利用該備用URL地址替換指定安卓應用發(fā)送的網絡訪問請求中的URL地址,將修改后的網絡訪問請求通過所述沙箱的網絡訪問接口進行發(fā)送。
[0115]可見,本實施例通過沙箱對于指定安卓應用發(fā)送的網絡訪問請求進行了篩選,阻止了指定安卓應用加載廣告的事件。
[0116]在本發(fā)明的一個是實施例中,本方案中被放入沙箱中監(jiān)控的指定安卓應用可以是由用戶選擇的,例如,向用戶展示應用列表,將用戶選擇的應用作為指定安卓應用;執(zhí)行圖1所示方法的步驟S110-S130,在步驟S130中將對用戶選擇的應用進行監(jiān)控,阻止該應用執(zhí)行加載廣告的行為。
[0117]其中,由于上文中提到了多種廣告攔截策略,用戶也可以對策略進行選擇,例如,向用戶展示廣告攔截策略列表,根據用戶選擇的廣告攔截策略,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0118]更為具體地,在預配置文件中將用戶選擇的應用名寫入相應的廣告攔截策略對應的應用名列表;用戶也可選擇不使用該策略的應用(即排他性選擇),在預配置文件中將用戶選擇的應用以外的應用名寫入相應的廣告攔截策略對應的應用名列表。
[0119]此外,云端也會提供一些默認配置策略。例如,云端提供了讓用戶一鍵設置的功能,支持云端配置如下策略:禁止平時只在前臺使用的應用(例如瀏覽器、視頻播放軟件等應用)在后臺聯(lián)網,和/或,禁止無需聯(lián)網的應用(例如計算器等應用)進行聯(lián)網。在云端配置的策略可定時同步到客戶端,存儲在預配置文件中以供匹配使用。
[0120]Unix系的操作系統(tǒng),以安卓系統(tǒng)為典型代表,廣泛應用于各種移動通信終端中。安卓系統(tǒng)具有相對較為嚴格的權限管理機制,默認狀態(tài)下,非系統(tǒng)應用的權限較低。要突破權限限制,需要將非系統(tǒng)應用的權限提高到最高級別,也即進行ROOT授權。獲得安卓系統(tǒng)權限的非系統(tǒng)應用即可對其他安卓應用的惡意行為進行攔截,對消耗系統(tǒng)資源的設置項進行修改,因此,多數情況下,市面上的安全軟件需要在已經獲得ROOT授權的安卓移動終端上工作,才能達到其最優(yōu)效果。但是,一般用戶并不掌握較高的專業(yè)知識,未必能對其終端進行ROOT授權,即使進行了 ROOT授權,在為安全軟件開放更高權限的同時,也給了惡意程序以可乘之機。更為矛盾的是,在非ROOT條件下,一部分惡意程序能工作,而傳統(tǒng)的安全監(jiān)控軟件卻會失去絕對優(yōu)勢。因此,在非ROOT條件下解決對安卓系統(tǒng)中的安卓應用的安全監(jiān)控需求,是業(yè)內一直以來的努力方向。
[0121 ]為此,在本發(fā)明的一個實施例中,在步驟SI 10獲取指定安卓應用的安裝包并保存至指定目錄之前,該方法進一步包括:通過免ROOT方式獲取安卓系統(tǒng)權限??梢姡瑸榱藢Π沧肯到y(tǒng)上的系統(tǒng)應用以及第三方應用均能實現(xiàn)監(jiān)控,圖1所示的方法在將指定安卓應用放入沙箱運行、對指定安卓應用在運行過程中的行為進行監(jiān)控之前,先要獲取安卓系統(tǒng)權限,即獲取安卓系統(tǒng)中的system文件夾的操作權限;現(xiàn)有技術中ROOT方式是獲取系統(tǒng)目錄操作權限的最基本條件,然而,與現(xiàn)有技術不同的是,本方案不通過ROOT方式獲取系統(tǒng)目錄操作權限,可以在那些無法ROOT或者用戶不愿意ROOT的安卓設備上實施對安卓應用在運行過程中的行為的監(jiān)控,不修改系統(tǒng),無需對安卓設備進行刷機,不影響安卓設備的質保和升級,符合用戶需求。
[0122]具體地,在本發(fā)明的一個實施例中,上述通過免ROOT方式獲取安卓系統(tǒng)權限的方案是:獲取補丁包;通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限。本實施例通過為特定系統(tǒng)漏洞進行修復,借修復系統(tǒng)漏洞之機引入補丁包,將補丁包加載到安卓系統(tǒng)中,成為系統(tǒng)應用的一部分,以獲取安卓系統(tǒng)權限。其中提到的特定系統(tǒng)漏洞是指:現(xiàn)有的安卓系統(tǒng)目前存在的系統(tǒng)漏洞。
[0123]上述通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限包括:在加載補丁包修復特定系統(tǒng)漏洞的過程中,以所述補丁包替換特定系統(tǒng)應用,實現(xiàn)安卓系統(tǒng)對所述補丁包中的執(zhí)行文件的加載,使得所述補丁包中的執(zhí)行文件獲取安卓系統(tǒng)權限。在補丁包中的執(zhí)行文件獲取到安卓系統(tǒng)權限之后,可以對安卓系統(tǒng)中的system文件夾進行操作,即可以執(zhí)行后續(xù)步驟S110-S130將指定安卓應用的安裝包保存至指定目錄、構造指定安卓應用運行所需要的沙箱并使得指定安卓應用在該沙箱中運行、對指定安卓應用接收信息的事件進行監(jiān)控的過程;其中,所述補丁包的執(zhí)行文件中包含指示執(zhí)行上述步驟S110-S130的代碼,則通過調用所述補丁包中的相應執(zhí)行文件執(zhí)行上述步驟S110-S130,步驟SllO-S130的執(zhí)行邏輯在上文中已有詳細的描述。
[0124]以一個具體的例子來說明該實施例的實施過程:本例中特定系統(tǒng)漏洞為安卓系統(tǒng)中的MasterKey漏洞,利用該漏洞可以在不修改簽名的情況下修改安卓系統(tǒng)代碼?;诖讼到y(tǒng)原生漏洞,本方案對該系統(tǒng)漏洞加以利用,一方面修復了該漏洞,另一方面利用該漏洞的修復過程獲取了安卓系統(tǒng)權限,一舉多得,符合實際需求,保障用戶使用安卓設備的信息安全。具體地,本方案在檢查到安卓系統(tǒng)中的MaterKey漏洞后將通知用戶對該漏洞進行修復,修復過程中需要獲取用于修復該漏洞的補丁包,安裝該補丁包,以該補丁包應用替換安卓系統(tǒng)原有的系統(tǒng)應用Setting Storage,或者,以該補丁包在安卓系統(tǒng)原有的系統(tǒng)應用Setting Storage的基礎上進行升級,由于系統(tǒng)應用Setting Storage在安卓系統(tǒng)啟動時即進行加載,則本方案獲取的補丁包中的執(zhí)行文件也在安卓系統(tǒng)啟動時便進行加載,此時補丁包中的執(zhí)行文件中的代碼擁有了安卓系統(tǒng)最高權限,可以實現(xiàn)System文件訪問、權限管理等操作。在獲得了安卓系統(tǒng)權限之后,即可以執(zhí)行獲取指定安卓應用的安裝包并保存至指定目錄、構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行、對指定安卓應用接收信息的事件進行監(jiān)控并阻止向用戶提示指定安卓應用接收到信息的事件的操作。
[0125]此外,本方案中修復特定系統(tǒng)漏洞的補丁包可以根據用戶意愿隨時卸載,卸載后無殘留,符合用戶需求。
[ΟΙ26] 上例中所述的特定系統(tǒng)漏洞MasterKey漏洞以及特定系統(tǒng)應用Setting Storage應用均為舉例說明,可以根據實際需求進行選擇,在此不做限制。
[0127]本發(fā)明在步驟SllO中獲取指定安卓應用的安裝包并保存至指定目錄,其中所稱的指定目錄,是指本發(fā)明處于文件組織、管理效率的考慮而為這些需要構建沙箱環(huán)境而提供的自定義默認目錄,所有通過本方案在沙箱中運行的安卓應用的安裝包,均可被移動或復制保存到該指定目錄中,進一步還可以對其進行加密或隱藏,以確保其安全性;需要指出的是,這里的指定目錄,還可以是安卓系統(tǒng)中已經存在的目錄,既可以是單個目錄,也可以是多個目錄,概括而言,是為本發(fā)明所采用的用于存放由本方案構建沙箱環(huán)境的目標安卓應用的安裝包的目錄。
[0128]在本發(fā)明的一個實施例中,步驟SllO獲取指定安卓應用的安裝包并保存至指定目錄包括:
[0129]方式一,當指定安卓應用是已安裝應用時,從安卓系統(tǒng)的應用安裝目錄中查找指定安卓應用的安裝包,將該安裝包復制至指定目錄,卸載指定安卓應用。
[0130]例如,眾所周知地,安卓系統(tǒng)中,安卓應用的安裝會涉及對如下目錄的操作:data/app,安卓應用安裝目錄,安裝時安卓系統(tǒng)先把安卓應用的安裝包(AndroidPackage,APK)復制到此data/app目錄;(^丨&/(^1¥丨1^-030116,將3。1^解壓后的代碼文件(.dex文件)安裝到該目錄下;data/data,用于建立并存放安卓應用所需的資源數據?;谏鲜鲈砜芍?,安卓應用的apk文件即為其安裝包,在data/app目錄中可以找到該安裝包。因此,對于已安裝的指定安卓應用而言,可以從data/app目錄中復制相應的apk文件到指定目錄中,然后卸載該指定安卓應用,使得后續(xù)指定安卓應用在沙箱中運行而不在沙箱外運行,避免發(fā)生沖突。
[0131]方式二,當指定安卓應用是正在進行安裝的應用時,通過注冊默認安裝器攔截指定安卓應用的安裝廣播信息,從該安裝廣播信息中獲取指定安卓應用的安裝包,將該安裝包存放至指定目錄。
[0132]例如,對于一個準備或正在進行安裝的安卓應用而言,本發(fā)明可以通過將自身注冊為默認安裝器的形式,獲取該安卓應用的安裝廣播信息,從該安裝廣播信息中獲取該安卓應用的安裝包所在位置,從該位置獲取該安卓應用的安裝包,將該安卓應用的安裝包移動存放到指定目錄。
[0133]在本發(fā)明的一個實施例中,步驟S120構造指定安卓應用運行所需要的沙箱包括:解析指定目錄下的指定安卓應用的安裝包,獲取指定安卓應用的相關信息;構造指定安卓應用運行所需的資源環(huán)境,以在指定安卓應用運行時調取相應的資源;構造類加載器,以加載指定安卓應用的執(zhí)行文件中的相應類文件;構造主線程,以使該主線程執(zhí)行指定安卓應用中的各組件的啟動操作;為指定安卓應用中的各組件分別構造一個加載安卓應用安裝包對象。
[0134]例如,步驟S120的具體執(zhí)行過程可以是:
[0135]首先,解析指定目錄下的指定安卓應用的安裝包,獲取指定安裝包中包含的各組件,其中,安卓應用的組件分為四種類型,這四種類型分別為:活動(Activity)組件、廣播接收者(Broadcast Receiver)組件、服務Service組件和Content Provider組件。不是所有的安卓應用都必須包含所有這四種類型的組件,有的安卓應用可能由上述一種組件或多種組件組建。各組件都需要注冊才能使用,即每一個組件都需要在安卓應用的安裝包的配置文件An dr ο i dManif est.xml中進行配置。因此,指定安卓應用的安裝包的配置文件AndroidManifest.xml中有列出指定安卓應用所包含的所有組件。由此可知,本實施例可通過讀取指定安卓應用的安裝包中的AndroidManifest.xml文件,來獲取指定安卓應用的安裝包中所包含的所有組件。這里需要說明的是:安卓系統(tǒng)中的應用程序管理服務(PackageManager Service,PMS)安裝安卓應用的過程實質上就是解析安卓應用的安裝包中的配置文件AndroidManifest.xml的過程,并從里面得到安卓應用的相關信息,如得到安卓應用的Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件等信息,有了這些信息后,通過活動管理服務(Activity Manager Service,AMS)就可以在安卓系統(tǒng)中正常地運行該應用程序了,與上述安卓系統(tǒng)安裝安卓應用的過程類似,本方案也要先通過解析指定安卓應用的安裝包來獲取指定安卓應用的相關信息,具體地,可采用反射機制來獲取指定安卓應用的安裝包中包含的各組件;其中,本實施例中所采用的反射機制可以為Java反射機制,Java反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態(tài)獲取信息以及動態(tài)調用對象的方法的功能即為JAVA語言的反射機制。不同語言都有其相對應的反射機制,例如,C語言和C++語言均有其對應的反射機制。
[0136]其次,指定安卓應用在被加載運行時所采用的上下文是沙箱的上下文,因此,本方案所構造的沙箱中不僅要能加載指定安卓應用中的各組件,還需構建指定安卓應用運行所需要的環(huán)境。
[0137]眾所周知地,安卓應用在運行的過程中,是通過一個稱為Asset Manager資源管理器來讀取打包在安卓應用的安裝包里面的資源文件的;安卓應用的每一個activity組件都關聯(lián)一個context Impl對象,這個context Impl對象就是用來描述activity組件的運行上下文環(huán)境的;調用這個Context Impl對象的成員函數ini t來執(zhí)行初始化Acti vity組件運行上下文環(huán)境的工作,其中就包括創(chuàng)建用來訪問安卓應用資源的R e s ο u r c e s對象和AssetManager對象的工作。其中,ContextImpl.1nit函數就定義在文件frameworks/base/core/java/android/app/Contextlmpl.java中;ContextImpl.1nit函數中的參數packagelnfo指向的是一個LoadedApk對象,這個LoadedApk對象描述的是當前正在啟動組件所屬的Apk;用來訪問應用程序資源的Resources對象是通過調用參數packagelnfο所指向的是一個LoadedApk對象的成員函數getResources來創(chuàng)建的。由此可知,為了創(chuàng)建Resources對象,以提取或訪問安卓應用資源,本實施例還需分別為應用中的各組件構建一個loaded APK對象。
[0138]可見,本實施例需要為指定安卓應用構造其運行所需的資源環(huán)境,以在啟動各所述組件時調取相應的資源。具體的,可采用如下方式實現(xiàn):對資源Resources類的構造函數中的成員變量massets進行修改,以在啟動各所述組件時通過所述massets來調取相應的資源;和/或對資源管理器Asset Manager中的Asset Path函數進行修改,修改后的所述AssetPath函數指向所述安卓應用的安裝包中的資源文件,以在啟動各所述組件時通過所述Asset Manager調取所述Asset Path函數來獲取所述資源文件中的對應資源。其中,Resources類的構造函數定義在文件 frameworks/base/core/ java/android/content/res/Resources.java中。因為Resources類的構造函數將參數assets所指向的一個AssetManager對象保存在成員變量mAssets中,即mAssets = assets,使得Resources類的構造函數可以通過mAssets來訪問應用程序的資源。因此,本實施例可通過對資源類的構造函數中的成員變量massets進行修改,來實現(xiàn)通過massets調取應用程序所需的資源。其中,上述實現(xiàn)方式可采用反射機制來實現(xiàn)。當然,本實施例還可對資源管理器Asset Manager中的Asset Path函數進行修改,如通過AssetManager對象的成員函數addAssetPath來添加指定的應用程序資源文件路徑(如:路徑為/system/app/Music.apk)到Asset Path函數中。由于addAssetPath是隱藏API我們無法直接調用,所以只能通過反射機制來實現(xiàn)。
[0139]再者,本實施例還需要為指定安卓應用構造類加載器,以加載各所述組件中的相應加載類。具體的,所述構造類加載器,可采用如下方式實現(xiàn):將指定安卓應用的路徑添加到類加載器中的路徑列表pathlist中,構造根據所述應用程序路徑查找加載類的類加載器;和/或,對類加載器中的m parent成員進行修改,構造首先用parent找加載類的類加載器。構造首先用parent找加載類的類加載器的目的是:系統(tǒng)在找一個加載類的時候,首先調的是findloadedclassO函數,緊接著就會去調用mparentfindclassO函數。如果本實施例直接將class loader構造為首先用parent找加載類的類加載器,這樣系統(tǒng)在找這個類的時候,就直接調用mparentf indclass()函數去找了,省去了調用f indloadedclass()函數找類的步驟。
[0140]接著,由于一個安卓應用的運行只有一個主進程ActivityThread,ActivityThread對象描述的是當前正在運行的安卓應用進程。因此,本實施例正在沙箱中需構造出指定安卓應用的ActivityThread,以使所述Activity Thread執(zhí)行指定安卓應用中的各組件的啟動操作。
[0141]最后,本步驟分別為各所述組件構造一個加載指定安卓應用的安裝包loaded APK對象。具體的,可采用如下方式實現(xiàn):通過反射機制反射Activity Thread里的packageinfo,以分別為各所述組件構造一個加載指定安卓應用的安裝包loaded APK對象。[OH2]此外,若加載的所述組件為內容提供者ContentProvider組件,貝Ij通過反射機制調用所述 ContentProvider 組件。
[0143]由上述例子可知,本實施例提供的技術方案通過構造指定安卓應用運行所需的運行環(huán)境,以為應用程序提供同安裝后的運行環(huán)境相同的沙箱環(huán)境,使得指定安卓應用在沙箱中運行,由于指定應用程序是在沙箱內部的運行環(huán)境內運行的,通過沙箱能有效的進行權限的攔截、安卓應用的行為的監(jiān)控等,在一定程度上能解決因安卓系統(tǒng)上存在的諸多漏洞所帶來的安全隱患問題。
[0144]在本發(fā)明的一個實施例中,步驟S120構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行包括:解析指定目錄下的指定安卓應用的安裝包,生成該指定安卓應用的鏡像安裝包;在該鏡像安裝包的執(zhí)行文件中注入指示調用鉤子函數的代碼;修改該鏡像安裝包的配置文件的配置參數,用于加載指定安卓應用;在安卓系統(tǒng)中安裝并運行該鏡像安裝包;其中,所述鉤子函數用于對指定安卓應用的行為進行監(jiān)控。
[0145]眾所周知,指定安卓應用的安裝包為壓縮文件,一種方式中,可以將指定安卓應用的安裝包解壓至一個臨時工作目錄以完成解壓工作,解壓后,即可對指定安卓應用的安裝包中的各個文件進行解析;另一種方式中,也可以在內存中直接解析指定安卓應用的安裝包。無論采取哪種方式對指定安卓應用的安裝包進行解析,目的是為了獲取相關參數和資源,以配置生成指定安卓應用的鏡像安裝包,該鏡像可以是硬盤鏡像也可以是內存鏡像。由于指定安卓應用的安裝包的構成文件中包含執(zhí)行文件Classes.dex,相應地,在指定安卓應用的鏡像安裝包中也包含執(zhí)行文件Classes, dex,本方案通過在鏡像安裝包中的執(zhí)行文件中Classes.dex注入指示調用鉤子程序的代碼;且指定安卓應用的安裝包的構成文件中包含配置文件Androidmanifest.xml,相應地,在指定安卓應用的鏡像安裝包中也包含配置文件Androidmanifest.xml,對該配置文件進行修改,使得修改后的鏡像安裝包適于加載指定安卓應用,具體地,本方案利用Java反射調用機制將LoadAPK與Acti vityThread涉及的運行時配置信息用反射替換成指定目錄中的指定安卓應用的安裝包的類加載器ClassLoader與資源,實現(xiàn)鏡像安裝包對應的應用在運行時對指定安卓應用的加載。至此,本實施例所構建的指定安裝應用的鏡像安裝包對應的應用在運行時,先加載上述指示調用鉤子程序的執(zhí)行文件,再加載指定安卓應用,能夠實現(xiàn)利用鉤子程序對指定安卓應用在運行中發(fā)生的行為的監(jiān)控捕獲,具體地,阻止指定安卓應用加載廣告的事件。
[0146]本實施例中,指定安卓應用被加載到所構建的指定安卓應用的鏡像安裝包對應的應用的內部環(huán)境中去運行,該指定安卓應用的鏡像安裝包對應的應用的內部環(huán)境實質上相當于是沙箱環(huán)境,將指定安卓應用在安卓系統(tǒng)中隔離開來,并通過在該沙箱環(huán)境中設置鉤子程序來實現(xiàn)對指定安卓應用的行為的監(jiān)控。
[0147]圖2示出了根據本發(fā)明一個實施例的一種安卓應用的廣告攔截裝置的示意圖。如圖2所示,該安卓應用的廣告攔截裝置200包括:
[0148]獲取單元210,適于獲取指定安卓應用的安裝包并保存至指定目錄。
[0149]構造單元220,適于構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行。
[0150]監(jiān)控單元230,適于對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。
[0151]可見,圖2所示的裝置將指定安卓應用放入沙箱中運行,通過沙箱為指定安卓應用提供一個封閉的運行環(huán)境,以實現(xiàn)對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為,給用戶提供純凈、無干擾的安卓應用使用體驗。
[0152]在本發(fā)明的一個實施例中,所述監(jiān)控單元230,進一步適于解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0153]在本發(fā)明的一個實施例中,所述監(jiān)控單元230,進一步適于接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;以及適于對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0154]其中,所述監(jiān)控單元230,適于對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。
[0155]其中,所述監(jiān)控單元230,適于在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。
[0156]具體地,所述監(jiān)控單元230,適于攔截指定安卓應用包含的廣告插件對應的廣告插件彈窗,將攔截到的廣告插件彈窗的窗口展示屬性設置為不可見模式或隱藏模式。
[0157]在本發(fā)明的一個實施例中,所述監(jiān)控單元230,適于攔截指定安卓應用發(fā)送的調用Act i vi ty組件的消息,從該消息中獲取V i ew對象;對于獲取到的Vi ew對象,利用安卓反射機制獲取該View對象所屬的類信息和包結構,根據類信息和包結構獲取相應的包路徑,根據包路徑中每一級目錄名稱判斷該包路徑是否屬于廣告插件;是則,阻止該消息繼續(xù)發(fā)送,否貝1J,放行該消息。
[0158]在本發(fā)明的一個實施例中,所述監(jiān)控單元230,適于攔截指定安卓應用通過所述沙箱的網絡訪問接口發(fā)送的網絡訪問請求;根據該網絡訪問請求中的URL地址判斷該網絡訪問請求是否為廣告加載請求;是則,阻止該網絡訪問請求的繼續(xù)發(fā)送。
[0159]進一步地,所述監(jiān)控單元230,進一步適于預設一個或多個備用URL地址;在確定指定安卓應用發(fā)送的網絡訪問請求是廣告加載請求后,選擇一個備用URL地址,利用該備用URL地址替換指定安卓應用發(fā)送的網絡訪問請求中的URL地址,將修改后的網絡訪問請求通過所述沙箱的網絡訪問接口進行發(fā)送。
[0160]基于上述各實施例,所述獲取單元210,進一步適于向用戶展示應用列表,將用戶選擇的應用作為指定安卓應用;和/或,所述監(jiān)控單元230,進一步適于向用戶展示廣告攔截策略列表,根據用戶選擇的廣告攔截策略,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0161]在本發(fā)明的一個實施例中,所述獲取單元210,適于當指定安卓應用是已安裝應用時,從安卓系統(tǒng)的應用安裝目錄中查找指定安卓應用的安裝包,將該安裝包復制至指定目錄,卸載指定安卓應用。
[0162]在本發(fā)明的一個實施例中,所述獲取單元210,適于當指定安卓應用是正在進行安裝的應用時,通過注冊默認安裝器攔截指定安卓應用的安裝廣播信息,從該安裝廣播信息中獲取指定安卓應用的安裝包,將該安裝包存放至指定目錄。
[0163]在本發(fā)明的一個實施例中,所述構造單元220,適于解析指定目錄下的指定安卓應用的安裝包,獲取指定安卓應用的相關信息;構造指定安卓應用運行所需的資源環(huán)境,以在指定安卓應用運行時調取相應的資源;構造類加載器,以加載指定安卓應用的執(zhí)行文件中的相應類文件;構造主線程,以使該主線程執(zhí)行指定安卓應用中的各組件的啟動操作;為指定安卓應用中的各組件分別構造一個加載安卓應用安裝包對象。
[0164]在本發(fā)明的一個實施例中,所述構造單元220,適于解析指定目錄下的指定安卓應用的安裝包,生成該指定安卓應用的鏡像安裝包;在該鏡像安裝包的執(zhí)行文件中注入指示調用鉤子函數的代碼;修改該鏡像安裝包的配置文件的配置參數,用于加載指定安卓應用;在安卓系統(tǒng)中安裝并運行該鏡像安裝包;其中,所述鉤子函數用于對指定安卓應用的行為進行監(jiān)控。
[0165]圖3示出了根據本發(fā)明另一個實施例的一種安卓應用的廣告攔截裝置的示意圖。如圖3所示,該安卓應用的廣告攔截裝置300包括:獲取單元310、構造單元320、監(jiān)控單元330和系統(tǒng)權限獲取單元340。
[0166]其中,獲取單元310、構造單元320、監(jiān)控單元330與圖2所示的獲取單元210、構造單元220、監(jiān)控單元230對應相同的功能,相同的部分在此不再贅述。
[0167]系統(tǒng)權限獲取單元340,適于在所述獲取單元執(zhí)行獲取指定安卓應用的安裝包并保存至指定目錄的步驟之前,通過免ROOT方式獲取安卓系統(tǒng)權限。
[0168]具體地,所述系統(tǒng)權限獲取單元340,適于獲取補丁包,通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限。
[0169]其中,所述獲取單元310、所述構造單元320以及所述監(jiān)控單元330通過調用所述補丁包中的執(zhí)行文件執(zhí)行相應的步驟。
[0170]進一步地,所述系統(tǒng)權限獲取單元340,適于以所述補丁包替換特定系統(tǒng)應用,實現(xiàn)安卓系統(tǒng)對所述補丁包中的執(zhí)行文件的加載,使得所述補丁包中的執(zhí)行文件獲取安卓系統(tǒng)權限。
[0171]需要說明的是,圖2-圖3所示裝置的各實施例與圖1所示方法得到各實施例對應相同,上文已有詳細說明,在此不再贅述。
[0172]綜上所述,本發(fā)明的技術方案,通過免ROOT方式獲取安卓系統(tǒng)權限,在獲取到安卓系統(tǒng)權限后,構造指定安卓應用運行所需的沙箱,使得指定安卓應用在沙箱中運行,利用沙箱對指定安卓應用在運行過程中的行為進行監(jiān)控。依據該方案,通過沙箱阻止指定安卓應用加載廣告的事件的發(fā)生,為安卓用戶提供更加純凈無擾的安卓應用使用環(huán)境,并且,通過加載補丁包而非免ROOT方式獲取安卓系統(tǒng)權限,不對安卓系統(tǒng)進行不可逆修改,不影響安卓系統(tǒng)的運行,不影響相應安卓設備的升級和質保,在需要時可以對獲取安卓系統(tǒng)權限的補丁包進行卸載,過程簡單、可逆、無危害,符合任何程度的用戶需求。
[0173]需要說明的是:
[0174]在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關。各種通用裝置也可以與基于在此的示教一起使用。根據上面的描述,構造這類裝置所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0175]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
[0176]類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權利要求書由此明確地并入該【具體實施方式】,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
[0177]本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的替代特征來代替。
[0178]此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0179]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現(xiàn)根據本發(fā)明實施例的安卓應用的廣告攔截裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0180]應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0181]本發(fā)明公開了Al、一種安卓應用的廣告攔截方法,其中,該方法包括:
[0182]獲取指定安卓應用的安裝包并保存至指定目錄;
[0183]構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行;
[0184]對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。
[0185]A2、如Al所述的方法,其中,在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,該方法進一步包括:
[0186]解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;
[0187]是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0188]A3、如Al所述的方法,其中,在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,該方法進一步包括:
[0189]接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;
[0190]對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;
[0191]是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0192]A4、如A3所述的方法,其中,所述對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據包括:
[0193]對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。
[0194]A5、如A2或A3所述的方法,其中,所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0195]在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。
[0196]A6、如A5所述的方法,其中,所述攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求包括:
[0197]攔截指定安卓應用包含的廣告插件對應的廣告插件彈窗,將攔截到的廣告插件彈窗的窗口展示屬性設置為不可見模式或隱藏模式。
[0198]A7、如Al所述的方法,其中,所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0199]攔截指定安卓應用發(fā)送的調用Activity組件的消息,從該消息中獲取View對象;
[0200]對于獲取到的View對象,利用安卓反射機制獲取該View對象所屬的類信息和包結構,根據類信息和包結構獲取相應的包路徑,根據包路徑中每一級目錄名稱判斷該包路徑是否屬于廣告插件;
[0201 ]是則,阻止該消息繼續(xù)發(fā)送,否則,放行該消息。
[0202]AS、如Al所述的方法,其中,所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括:
[0203]攔截指定安卓應用通過所述沙箱的網絡訪問接口發(fā)送的網絡訪問請求;
[0204]根據該網絡訪問請求中的URL地址判斷該網絡訪問請求是否為廣告加載請求;
[0205]是則,阻止該網絡訪問請求的繼續(xù)發(fā)送。
[0206]A9、如A8所述的方法,其中,該方法進一步包括:
[0207]預設一個或多個備用URL地址;
[0208]在確定指定安卓應用發(fā)送的網絡訪問請求是廣告加載請求后,選擇一個備用URL地址,利用該備用URL地址替換指定安卓應用發(fā)送的網絡訪問請求中的URL地址,將修改后的網絡訪問請求通過所述沙箱的網絡訪問接口進行發(fā)送。
[0209]A10、如A1-A9中任一項所述的方法,其中,該方法進一步包括:
[0210]向用戶展示應用列表,將用戶選擇的應用作為指定安卓應用;
[0211]和/或,
[0212]向用戶展示廣告攔截策略列表,根據用戶選擇的廣告攔截策略,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0213]AU、如Al所述的方法,在所述獲取指定安卓應用的安裝包并保存至指定目錄之前,該方法進一步包括:
[0214]通過免ROOT方式獲取安卓系統(tǒng)權限。
[0215]A12、如All所述的方法,其中,所述通過免ROOT方式獲取安卓系統(tǒng)權限包括:
[0216]獲取補丁包;
[0217]通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限;
[0218]其中,所述補丁包中包括:所述將指定安卓應用的安裝包保存至指定目錄的步驟,所述構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行的步驟,以及,所述對指定安卓應用在運行過程中的行為進行監(jiān)控的步驟的執(zhí)行文件。
[0219]A13、如A12所述的方法,其中,所述通過安裝所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限包括:
[0220]以所述補丁包替換特定系統(tǒng)應用,實現(xiàn)安卓系統(tǒng)對所述補丁包中的執(zhí)行文件的加載,使得所述補丁包中的執(zhí)行文件獲取安卓系統(tǒng)權限。
[0221]A14、如Al所述的方法,其中,所述獲取指定安卓應用的安裝包并保存至指定目錄包括:
[0222]當指定安卓應用是已安裝應用時,從安卓系統(tǒng)的應用安裝目錄中查找指定安卓應用的安裝包,將該安裝包復制至指定目錄,卸載指定安卓應用。
[0223]A15、如Al所述的方法,其中,所述獲取指定安卓應用的安裝包并保存至指定目錄包括:
[0224]當指定安卓應用是正在進行安裝的應用時,通過注冊默認安裝器攔截指定安卓應用的安裝廣播信息,從該安裝廣播信息中獲取指定安卓應用的安裝包,將該安裝包存放至指定目錄。
[0225]A16、如Al所述的方法,其中,所述構造指定安卓應用運行所需要的沙箱包括:
[0226]解析指定目錄下的指定安卓應用的安裝包,獲取指定安卓應用的相關信息;
[0227]構造指定安卓應用運行所需的資源環(huán)境,以在指定安卓應用運行時調取相應的資源;
[0228]構造類加載器,以加載指定安卓應用的執(zhí)行文件中的相應類文件;
[0229]構造主線程,以使該主線程執(zhí)行指定安卓應用中的各組件的啟動操作;
[0230]為指定安卓應用中的各組件分別構造一個加載安卓應用安裝包對象。
[0231]A17、如Al所述的方法,其中,構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行包括:
[0232]解析指定目錄下的指定安卓應用的安裝包,生成該指定安卓應用的鏡像安裝包;
[0233]在該鏡像安裝包的執(zhí)行文件中注入指示調用鉤子函數的代碼;
[0234]修改該鏡像安裝包的配置文件的配置參數,用于加載指定安卓應用;
[0235]在安卓系統(tǒng)中安裝并運行該鏡像安裝包;
[0236]其中,所述鉤子函數用于對指定安卓應用的行為進行監(jiān)控。
[0237]本發(fā)明還公開了B18、一種安卓應用的廣告攔截裝置,其中,該裝置包括:
[0238]獲取單元,適于獲取指定安卓應用的安裝包并保存至指定目錄;
[0239]構造單元,適于構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行;
[0240]監(jiān)控單元,適于對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。
[0241]B19、如B18所述的裝置,其中,
[0242]所述監(jiān)控單元,進一步適于解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0243]B20、如B18所述的裝置,其中,
[0244]所述監(jiān)控單元,進一步適于接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;以及適于對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0245]B21、如B20所述的裝置,其中,
[0246]所述監(jiān)控單元,適于對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。
[0247]B22、如B19或B20所述的裝置,其中,
[0248]所述監(jiān)控單元,適于在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。
[0249]B23、如B22所述的裝置,其中,
[0250]所述監(jiān)控單元,適于攔截指定安卓應用包含的廣告插件對應的廣告插件彈窗,將攔截到的廣告插件彈窗的窗口展示屬性設置為不可見模式或隱藏模式。
[0251]B24、如B18所述的裝置,其中,
[0252]所述監(jiān)控單元,適于攔截指定安卓應用發(fā)送的調用Activity組件的消息,從該消息中獲取View對象;對于獲取到的View對象,利用安卓反射機制獲取該View對象所屬的類信息和包結構,根據類信息和包結構獲取相應的包路徑,根據包路徑中每一級目錄名稱判斷該包路徑是否屬于廣告插件;是則,阻止該消息繼續(xù)發(fā)送,否則,放行該消息。
[0253]B25、如B18所述的裝置,其中,
[0254]所述監(jiān)控單元,適于攔截指定安卓應用通過所述沙箱的網絡訪問接口發(fā)送的網絡訪問請求;根據該網絡訪問請求中的URL地址判斷該網絡訪問請求是否為廣告加載請求;是貝1J,阻止該網絡訪問請求的繼續(xù)發(fā)送。
[0255]B26、如B25所述的裝置,其中,
[0256]所述監(jiān)控單元,進一步適于預設一個或多個備用URL地址;在確定指定安卓應用發(fā)送的網絡訪問請求是廣告加載請求后,選擇一個備用URL地址,利用該備用URL地址替換指定安卓應用發(fā)送的網絡訪問請求中的URL地址,將修改后的網絡訪問請求通過所述沙箱的網絡訪問接口進行發(fā)送。
[0257]B27、如B18-B26中任一項所述的裝置,其中,
[0258]所述獲取單元,進一步適于向用戶展示應用列表,將用戶選擇的應用作為指定安卓應用;
[0259]所述監(jiān)控單元,進一步適于向用戶展示廣告攔截策略列表,根據用戶選擇的廣告攔截策略,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。
[0260]B28、如B18所述的裝置,該裝置進一步包括:
[0261]系統(tǒng)權限獲取單元,適于在所述獲取單元執(zhí)行獲取指定安卓應用的安裝包并保存至指定目錄的步驟之前,通過免ROOT方式獲取安卓系統(tǒng)權限。
[0262]B29、如B28所述的裝置,其中,
[0263]所述系統(tǒng)權限獲取單元,適于獲取補丁包,通過加載所述補丁包對特定系統(tǒng)漏洞進行修復,獲取安卓系統(tǒng)權限;
[0264]其中,所述獲取單元、所述構造單元以及所述監(jiān)控單元通過調用所述補丁包中的執(zhí)行文件執(zhí)行相應的步驟。
[0265]B30、如B29所述的裝置,其中,
[0266]所述系統(tǒng)權限獲取單元,適于以所述補丁包替換特定系統(tǒng)應用,實現(xiàn)安卓系統(tǒng)對所述補丁包中的執(zhí)行文件的加載,使得所述補丁包中的執(zhí)行文件獲取安卓系統(tǒng)權限。
[0267]B31、如B18所述的裝置,其中,
[0268]所述獲取單元,適于當指定安卓應用是已安裝應用時,從安卓系統(tǒng)的應用安裝目錄中查找指定安卓應用的安裝包,將該安裝包復制至指定目錄,卸載指定安卓應用。
[0269]B32、如B18所述的裝置,其中,
[0270]所述獲取單元,適于當指定安卓應用是正在進行安裝的應用時,通過注冊默認安裝器攔截指定安卓應用的安裝廣播信息,從該安裝廣播信息中獲取指定安卓應用的安裝包,將該安裝包存放至指定目錄。
[0271]B33、如B18所述的裝置,其中,
[0272]所述構造單元,適于解析指定目錄下的指定安卓應用的安裝包,獲取指定安卓應用的相關信息;構造指定安卓應用運行所需的資源環(huán)境,以在指定安卓應用運行時調取相應的資源;構造類加載器,以加載指定安卓應用的執(zhí)行文件中的相應類文件;構造主線程,以使該主線程執(zhí)行指定安卓應用中的各組件的啟動操作;為指定安卓應用中的各組件分別構造一個加載安卓應用安裝包對象。
[0273]B34、如B18所述的裝置,其中,
[0274]所述構造單元,適于解析指定目錄下的指定安卓應用的安裝包,生成該指定安卓應用的鏡像安裝包;在該鏡像安裝包的執(zhí)行文件中注入指示調用鉤子函數的代碼;修改該鏡像安裝包的配置文件的配置參數,用于加載指定安卓應用;在安卓系統(tǒng)中安裝并運行該鏡像安裝包;
[0275]其中,所述鉤子函數用于對指定安卓應用的行為進行監(jiān)控。
【主權項】
1.一種安卓應用的廣告攔截方法,其中,該方法包括: 獲取指定安卓應用的安裝包并保存至指定目錄; 構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行; 對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。2.如權利要求1所述的方法,其中,在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,該方法進一步包括: 解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包; 是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。3.如權利要求1所述的方法,其中,在所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為之前,該方法進一步包括: 接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據; 對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據; 是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。4.如權利要求3所述的方法,其中,所述對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據包括: 對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。5.如權利要求2或3所述的方法,其中,所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為包括: 在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。6.一種安卓應用的廣告攔截裝置,其中,該裝置包括: 獲取單元,適于獲取指定安卓應用的安裝包并保存至指定目錄; 構造單元,適于構造指定安卓應用運行所需要的沙箱,使得指定安卓應用在該沙箱中運行; 監(jiān)控單元,適于對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為。7.如權利要求6所述的裝置,其中, 所述監(jiān)控單元,進一步適于解析指定目錄下的指定安卓應用的安裝包,查看指定安卓應用的安裝包中是否存在廣告插件的Jar包;是則,執(zhí)行所述對指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。8.如權利要求6所述的裝置,其中, 所述監(jiān)控單元,進一步適于接收服務器下發(fā)的廣告插件的特征數據庫,該特征數據庫中包括:從各廣告插件樣本中提取出的特征數據;以及適于對運行在沙箱中的指定安卓應用進行掃描,判斷指定安卓應用是否包含命中所述特征數據庫的數據;是則,確定指定安卓應用中包含廣告插件,執(zhí)行所述指定安卓應用在運行過程中的行為進行監(jiān)控,阻止指定安卓應用加載廣告的行為的步驟。9.如權利要求8所述的裝置,其中, 所述監(jiān)控單元,適于對指定安卓應用的二進制文件進行掃描,將二進制文件中的固定代碼/固定字符串與所述特征數據庫中的特征數據進行比對,判斷是否命中所述特征數據庫。10.如權利要求7或8所述的裝置,其中, 所述監(jiān)控單元,適于在確定指定安卓應用中包含廣告插件后,攔截指定安卓應用包含的廣告插件通過所述沙箱的接口發(fā)送的廣告加載請求。
【文檔編號】G06F21/53GK106096394SQ201610429935
【公開日】2016年11月9日
【申請日】2016年6月16日
【發(fā)明人】劉剛
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司