應(yīng)用程序自我保護(hù)、主動防御方法與裝置制造方法
【專利摘要】本發(fā)明以Android應(yīng)用場景為例,公開一種應(yīng)用程序主動防御方法和相應(yīng)的裝置,該方法包括以下步驟:由注冊到系統(tǒng)底層的卸載服務(wù)進(jìn)程截獲卸載該應(yīng)用程序的行為;由卸載服務(wù)進(jìn)程將該行為通知與其通信的客戶端服務(wù)進(jìn)程;由客戶端服務(wù)進(jìn)程還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)進(jìn)程放行所述卸載應(yīng)用程序的行為。此外,本發(fā)明還基于前述的方法而公開一種應(yīng)用程序自我保護(hù)方法和裝置。本發(fā)明能夠?qū)崿F(xiàn)對操作系統(tǒng)卸載應(yīng)用程序過程的監(jiān)聽,能夠前置于該應(yīng)用程序被卸載而進(jìn)行相關(guān)的預(yù)前處理,本質(zhì)上是實(shí)現(xiàn)了安全技術(shù)中的主動防御功能,可以更有效地保護(hù)應(yīng)用程序的安全。
【專利說明】應(yīng)用程序自我保護(hù)、主動防御方法與裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)程序活動控制技術(shù),一方面涉及一種應(yīng)用程序主動防御方法與裝置;另一方面,則涉及一種應(yīng)用程序自我保護(hù)方法和裝置。
【背景技術(shù)】
[0002]計算機(jī)操作系統(tǒng)中的應(yīng)用程序,使用一段時間后出于各種原因會可能被卸載,作為提供應(yīng)用程序的開發(fā)者,需要了解用戶卸載該應(yīng)用程序的原因,或者吸收用戶的相關(guān)建議,所以會調(diào)查用戶卸載原因,以及接收用戶的相關(guān)建議等。實(shí)現(xiàn)了這種追蹤功能的應(yīng)用程序比較普遍,幾乎所有操作系統(tǒng)上的應(yīng)用程序理論上都能實(shí)現(xiàn)這種功能,在用戶卸載應(yīng)用程序后,將用戶導(dǎo)向一個調(diào)查網(wǎng)頁,請求用戶填寫調(diào)查問卷,最終獲得需要的信息。
[0003]現(xiàn)有技術(shù)中,以八11(^01(1為例,第三方應(yīng)用程序安裝后,會在/也仏/也仏中建立其數(shù)據(jù)文件,應(yīng)用程序監(jiān)控自身被卸載的方法通常是創(chuàng)建一個子進(jìn)程用于監(jiān)控其位于第三方應(yīng)用數(shù)據(jù)目錄/也仏/也仏內(nèi)的文件清除事件,當(dāng)系統(tǒng)卸載該應(yīng)用程序并且把/(1211:21/(181:8里面的文件清除時,便立刻訪問一個網(wǎng)頁顯示卸載調(diào)查。
[0004]上述現(xiàn)有方法存在幾個不足:一、4.4版本以上由于系統(tǒng)運(yùn)行機(jī)制不同于之前的版本,這種方法將不再適用;二、只能監(jiān)聽到卸載之后的事件,不能監(jiān)聽卸載前的行為;三、如果應(yīng)用要監(jiān)聽卸載時,諸如一些安全軟件想要還原用戶系統(tǒng)配置,清理資源等操作,也無法實(shí)現(xiàn)。
[0005]對于應(yīng)用程序的卸載的管理,可以從兩個方面來分析,一方面是安全軟件需要對其他應(yīng)用程序?qū)嵤┑男遁d監(jiān)控和保護(hù),另一方面則是某個應(yīng)用程序自身需要建立對自身運(yùn)行狀態(tài)進(jìn)行保護(hù)的安全防護(hù)機(jī)制。本發(fā)明將基于此處的分析,來對應(yīng)用程序的保護(hù)加以考慮。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的首要目的在于克服上述的至少一個問題,而提供一種應(yīng)用程序主動防御方法和裝置。
[0007]本發(fā)明的另一目的在于克服上述的至少一個問題,而提供一種應(yīng)用程序自我保護(hù)方法和裝置。
[0008]為實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明采取如下技術(shù)方案:
[0009]本發(fā)明提供的一種應(yīng)用程序主動防御方法,包括以下步驟:
[0010]由注冊到系統(tǒng)底層的卸載服務(wù)進(jìn)程截獲卸載該應(yīng)用程序的行為;
[0011]由卸載服務(wù)進(jìn)程將該行為通知與其通信的客戶端服務(wù)進(jìn)程;
[0012]由客戶端服務(wù)進(jìn)程還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)進(jìn)程放行所述卸載應(yīng)用程序的行為。
[0013]具體的,所述卸載服務(wù)進(jìn)程基于獲取如於權(quán)限為前提而被添加到系統(tǒng)底層。通過調(diào)用函數(shù)而將所述卸載服務(wù)進(jìn)程添加到系統(tǒng)底層。
[0014]具體的,所述卸載服務(wù)進(jìn)程通過鉤子函數(shù)掛鉤包管理服務(wù)進(jìn)程的與卸載應(yīng)用程序相關(guān)的函數(shù)的運(yùn)行入口點(diǎn)而截獲所述卸載應(yīng)用程序的行為,并通過向該相關(guān)函數(shù)的調(diào)用者返回自定義數(shù)據(jù)而恢復(fù)所述包管理服務(wù)進(jìn)程的運(yùn)行。較佳的,該鉤子函數(shù)具體通過監(jiān)控包管理服務(wù)進(jìn)程調(diào)用如16仏?^6()函數(shù)而截獲所述的行為。
[0015]根據(jù)本發(fā)明的一個實(shí)施例所揭示,當(dāng)且僅當(dāng)所述客戶端服務(wù)進(jìn)程從其接收到的通知中判斷出待卸載的應(yīng)用程序?yàn)樵摽蛻舳朔?wù)進(jìn)程所屬的應(yīng)用程序時,才執(zhí)行所述還原數(shù)據(jù)并通知卸載服務(wù)進(jìn)程放行卸載的步驟,否則通知所述卸載服務(wù)進(jìn)程直接放行卸載所述應(yīng)用程序。
[0016]進(jìn)一步,通過比較所述通知中所包含的包名與所述客戶端服務(wù)進(jìn)程所屬應(yīng)用程序的包名是否相同,而確定待卸載應(yīng)用程序是否為該客戶端服務(wù)進(jìn)程所屬的應(yīng)用程序。
[0017]進(jìn)一步,所述客戶端服務(wù)進(jìn)程收到卸載服務(wù)進(jìn)程的通知后,彈出詢問窗口,當(dāng)且僅當(dāng)接收到通過該窗口輸入的表征允許卸載所述應(yīng)用程序的指令時,才執(zhí)行所述還原數(shù)據(jù)并通知卸載服務(wù)進(jìn)程放行的步驟;否則通知所述卸載服務(wù)進(jìn)程阻止卸載所述應(yīng)用程序。
[0018]較佳的,所述卸載服務(wù)進(jìn)程與所述客戶端服務(wù)進(jìn)程之間基于81=(161'機(jī)制進(jìn)行通信。
[0019]進(jìn)一步,所述還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的過程,包括執(zhí)行如下操作中的一種或任意多種:
[0020]清除由該應(yīng)用程序增添的數(shù)據(jù);
[0021]恢復(fù)由該應(yīng)用程序修改的數(shù)據(jù);
[0022]恢復(fù)由該應(yīng)用程序刪除的數(shù)據(jù);
[0023]通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。
[0024]具體的,所述由該應(yīng)用程序修改的數(shù)據(jù)包括其他應(yīng)用程序在活動管理服務(wù)進(jìn)程注冊的數(shù)據(jù)。
[0025]根據(jù)本發(fā)明的一個實(shí)施例所揭示,所述客戶端服務(wù)進(jìn)程獨(dú)立于所述應(yīng)用程序而運(yùn)行。
[0026]進(jìn)一步,所述客戶端服務(wù)進(jìn)程接收到卸載服務(wù)進(jìn)程的通知后,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。
[0027]本發(fā)明提供的一種應(yīng)用程序主動防御裝置,包括:
[0028]卸載服務(wù)單元,預(yù)注冊到系統(tǒng)底層,用于截獲卸載該應(yīng)用程序的行為,且將該行為通知與其通信的客戶端服務(wù)進(jìn)程;
[0029]客戶端服務(wù)單元,用于還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)進(jìn)程放行所述卸載應(yīng)用程序的行為。
[0030]具體的,所述卸載服務(wù)單元基于獲取權(quán)限為前提而被添加到系統(tǒng)底層。
[0031]該裝置進(jìn)一步包括注冊單元,用于通過調(diào)用3781:6111361^106.函數(shù)將所述卸載服務(wù)單元注冊到系統(tǒng)底層。
[0032]進(jìn)一步,所述卸載服務(wù)單元包括監(jiān)控單元,該監(jiān)控單元被配置為通過鉤子函數(shù)掛鉤包管理服務(wù)進(jìn)程的與卸載應(yīng)用程序相關(guān)的函數(shù)的運(yùn)行入口點(diǎn)而截獲所述卸載應(yīng)用程序的行為,并通過向該相關(guān)函數(shù)的調(diào)用者返回自定義數(shù)據(jù)而恢復(fù)所述包管理服務(wù)進(jìn)程的運(yùn)行。
[0033]具體的,所述的監(jiān)控單元,被配置為通過所述鉤子函數(shù)監(jiān)控包管理服務(wù)進(jìn)程調(diào)用(16161:6^80^86 0函數(shù)而截獲所述的行為。
[0034]根據(jù)本發(fā)明的一個實(shí)施例所揭示,所述客戶端服務(wù)單元,被配置為當(dāng)且僅當(dāng)從其接收到的通知中判斷出待卸載的應(yīng)用程序?yàn)樵摽蛻舳朔?wù)單元所屬的應(yīng)用程序時,才執(zhí)行所述還原數(shù)據(jù)并通知卸載服務(wù)單元放行卸載,否則通知所述卸載服務(wù)單元直接放行卸載所述應(yīng)用程序。
[0035]進(jìn)一步,所述的客戶端服務(wù)單元,被配置為通過比較所述通知中所包含的包名與該單元所屬應(yīng)用程序的包名是否相同,而確定待卸載應(yīng)用程序是否為該客戶端服務(wù)進(jìn)程所屬的應(yīng)用程序。
[0036]進(jìn)一步,所述客戶端服務(wù)單元,被配置為當(dāng)其收到卸載服務(wù)單元的通知后,彈出詢問窗口,當(dāng)且僅當(dāng)接收到通過該窗口輸入的表征允許卸載所述應(yīng)用程序的指令時,才執(zhí)行所述還原數(shù)據(jù)并通知卸載服務(wù)單元放行卸載;否則通知所述卸載服務(wù)單元阻止卸載所述應(yīng)用程序。
[0037]較佳的,所述卸載服務(wù)單元與所述客戶端服務(wù)單元之間基于81=(161'機(jī)制進(jìn)行通信。
[0038]具體的,所述客戶端服務(wù)單元,包括用于還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的還原模塊,該還原模塊具體包括如下一個或任意多個子模塊:
[0039]用于清除由該應(yīng)用程序增添的數(shù)據(jù)的子模塊;
[0040]用于恢復(fù)由該應(yīng)用程序修改的數(shù)據(jù)的子模塊;
[0041]用于恢復(fù)由該應(yīng)用程序刪除的數(shù)據(jù)的子模塊;
[0042]用于通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)的子模塊。
[0043]進(jìn)一步,所述還原模塊中,由該應(yīng)用程序修改的數(shù)據(jù)包括其他應(yīng)用程序在活動管理服務(wù)進(jìn)程注冊的數(shù)據(jù)。
[0044]根據(jù)本發(fā)明的另一實(shí)施例所揭示,所述客戶端服務(wù)單元獨(dú)立于所述應(yīng)用程序而配置。
[0045]進(jìn)一步,所述客戶端服務(wù)單元,被配置為當(dāng)其接收到卸載服務(wù)進(jìn)程的通知后,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。
[0046]本發(fā)明提供的一種應(yīng)用程序自我保護(hù)方法,包括如下步驟:
[0047]建立應(yīng)用程序的客戶端服務(wù)進(jìn)程與系統(tǒng)底層的卸載服務(wù)進(jìn)程的通信;
[0048]由所述客戶端服務(wù)進(jìn)程執(zhí)行如下過程:
[0049]接收所述卸載服務(wù)進(jìn)程的表征卸載該應(yīng)用程序的通知;
[0050]判斷該通知中包含本應(yīng)用程序包名時,彈窗以問詢用戶意向;
[0051]當(dāng)非接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程阻止卸載。
[0052]具體的,所述系統(tǒng)底層的卸載服務(wù)進(jìn)程系預(yù)先由其他應(yīng)用程序向系統(tǒng)注冊。
[0053]具體的,所述客戶端服務(wù)進(jìn)程對應(yīng)的服務(wù)配置于該應(yīng)用程序的配置文件中。較佳的,該配置文件為八。
[0054]具體的,當(dāng)預(yù)定時間范圍內(nèi)未接收到用戶指令時,或者當(dāng)接收到表征不允許卸載的指令時,視為非接收到表征允許卸載的指令而通知卸載服務(wù)進(jìn)程阻止卸載。
[0055]進(jìn)一步,僅當(dāng)接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程放行卸載。
[0056]較佳的,通知卸載服務(wù)進(jìn)程放行卸載之前,先還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)。
[0057]具體的,所述還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的過程,包括執(zhí)行如下操作中的一種或任意多種:
[0058]清除由該應(yīng)用程序增添的數(shù)據(jù);
[0059]恢復(fù)由該應(yīng)用程序修改的數(shù)據(jù);
[0060]恢復(fù)由該應(yīng)用程序刪除的數(shù)據(jù);
[0061]通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。
[0062]具體的,所述應(yīng)用程序增添或修改的數(shù)據(jù)為存儲于30卡中的文件。
[0063]較佳的,所述由該應(yīng)用程序修改的數(shù)據(jù)包括向活動管理服務(wù)進(jìn)程注冊的其他應(yīng)用程序的注冊數(shù)據(jù)。
[0064]進(jìn)一步,所述客戶端服務(wù)進(jìn)程接收到卸載服務(wù)進(jìn)程的通知后,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。
[0065]本發(fā)明提供的一種應(yīng)用程序自我保護(hù)裝置,包括:包括客戶端服務(wù)單元,該單元進(jìn)一步包括:
[0066]通信模塊,用于建立客戶端服務(wù)單元與系統(tǒng)底層的卸載服務(wù)單元的通信;
[0067]接收模塊,用于接收所述卸載服務(wù)進(jìn)程的表征卸載該應(yīng)用程序的通知;
[0068]交互模塊,用于判斷該通知中包含本應(yīng)用程序包名時,彈窗以問詢用戶意向;
[0069]響應(yīng)模塊,被配置為當(dāng)非接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程阻止卸載。
[0070]具體的,所述系統(tǒng)底層的卸載服務(wù)單元屬于其他應(yīng)用程序的預(yù)注冊的單元。
[0071]進(jìn)一步,所述客戶端服務(wù)單元對應(yīng)的服務(wù)配置信息包含于該應(yīng)用程序的配置文件中。具體的,該配置文件為八。
[0072]進(jìn)一步,所述的響應(yīng)模塊,被配置為當(dāng)預(yù)定時間范圍內(nèi)未接收到用戶指令時,或者當(dāng)接收到表征不允許卸載的指令時,視為非接收到表征允許卸載的指令而通知卸載服務(wù)單元阻止卸載。
[0073]進(jìn)一步,所述的響應(yīng)模塊,被配置為僅當(dāng)接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程放行卸載。
[0074]進(jìn)一步,所述的響應(yīng)模塊,被配置為通知卸載服務(wù)進(jìn)程放行卸載之前,先還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)。
[0075]具體的,該客戶端服務(wù)單元還包括用于還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的還原模塊,該還原模塊具體包括如下一個或任意多個子模塊:
[0076]用于清除由該應(yīng)用程序增添的數(shù)據(jù)的子模塊;
[0077]用于恢復(fù)由該應(yīng)用程序修改的數(shù)據(jù)的子模塊;
[0078]用于恢復(fù)由該應(yīng)用程序刪除的數(shù)據(jù)的子模塊;
[0079]用于通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)的子模塊。
[0080]具體的,所述應(yīng)用程序增添或修改的數(shù)據(jù)為存儲于30卡中的文件。
[0081]較佳的,所述由該應(yīng)用程序修改的數(shù)據(jù)包括向活動管理服務(wù)進(jìn)程注冊的其他應(yīng)用程序的注冊數(shù)據(jù)。
[0082]進(jìn)一步,所述客戶端服務(wù)單元,被配置為當(dāng)其接收到卸載服務(wù)進(jìn)程的通知后,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。
[0083]相較于現(xiàn)有技術(shù),本發(fā)明至少具有如下優(yōu)點(diǎn):
[0084]1、本發(fā)明通過在系統(tǒng)底層注冊卸載服務(wù)進(jìn)程用于監(jiān)控操作系統(tǒng)進(jìn)程的卸載行為,并且建立該系統(tǒng)底層注冊的卸載服務(wù)進(jìn)程與用戶層的客戶端服務(wù)進(jìn)程之間的通信機(jī)制,可以克服用戶層應(yīng)用程序及其用戶層服務(wù)進(jìn)程無法監(jiān)控自身或者其他應(yīng)用程序被卸載的缺點(diǎn),及時發(fā)現(xiàn)系統(tǒng)對應(yīng)用程序自身或者受自身保護(hù)的應(yīng)用程序?qū)嵤┑男遁d行為,因應(yīng)這一行為做出適應(yīng)性的告警處理,對應(yīng)用程序自身或者受該應(yīng)用程序保護(hù)的其他應(yīng)用程序進(jìn)行了有效的保護(hù),尤其是對于一些安全軟件而言,本發(fā)明的運(yùn)用,對該些安全軟件實(shí)現(xiàn)主動防御和自我保護(hù)的效果是非常明顯的。
[0085]2、本發(fā)明通過用戶層的客戶端服務(wù)進(jìn)程獲知目標(biāo)應(yīng)用程序即將被刪除后,在確定刪除該目標(biāo)應(yīng)用程序前,可以先行對該應(yīng)用程序做出卸載前的處理,例如清除由該應(yīng)用程序產(chǎn)生或修改的數(shù)據(jù),停止該應(yīng)用程序的相應(yīng)服務(wù)進(jìn)程等,以及可以激活網(wǎng)站鏈接提供調(diào)查問卷進(jìn)行用戶意向調(diào)查等,在用戶未真正刪除目標(biāo)應(yīng)用程序之前即可提前完成這些善后工作,避免目標(biāo)應(yīng)用程序被刪除后將大量垃圾文件或冗余數(shù)據(jù)遺留于移動終端中,并且有助于應(yīng)用程序開發(fā)者的產(chǎn)品改進(jìn)。
[0086]3、本發(fā)明尤其適用于與安全軟件技術(shù)相結(jié)合,而建立一種適于通過接口實(shí)現(xiàn)安全軟件與應(yīng)用程序之間互相配合實(shí)現(xiàn)應(yīng)用程序的自我保護(hù)的合作機(jī)制。具體而言,當(dāng)卸載服務(wù)進(jìn)程由安全軟件實(shí)現(xiàn)時,應(yīng)用程序便可通過向系統(tǒng)注冊客戶端服務(wù)進(jìn)程,然后通過客戶端服務(wù)進(jìn)程與安全軟件預(yù)注冊到系統(tǒng)底層的卸載服務(wù)進(jìn)程按彼此的協(xié)議進(jìn)行通信,由此便可建立兩者之間的相互配合,由卸載服務(wù)進(jìn)程將有關(guān)卸載行為的通知發(fā)送給客戶端服務(wù)進(jìn)程,而進(jìn)一步可由客戶端服務(wù)進(jìn)程實(shí)施保護(hù)應(yīng)用程序自身的響應(yīng),由此,應(yīng)用程序便可實(shí)現(xiàn)自我保護(hù)功能。同理,安全軟件也可通過自身的客戶端服務(wù)進(jìn)程與自身的卸載服務(wù)進(jìn)程之間的通信,來保護(hù)受其保護(hù)的應(yīng)用程序以免該應(yīng)用程序被隨意卸載。
[0087]概況而言,本發(fā)明可以有效保護(hù)應(yīng)用程序不被隨意卸載,且在卸載之前可以對與該應(yīng)用程序相關(guān)的資源進(jìn)行清理、恢復(fù)系統(tǒng)環(huán)境、顯示卸載反饋等與卸載應(yīng)用程序有關(guān)的清理操作。
[0088]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【專利附圖】
【附圖說明】
[0089]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
[0090]圖1是本發(fā)明的應(yīng)用程序主動防御方法的一個實(shí)施例的流程示意圖;
[0091]圖2是本發(fā)明的應(yīng)用程序主動防御裝置的一個實(shí)施例的原理框圖;
[0092]圖3是本發(fā)明的應(yīng)用程序自我保護(hù)方法的一個實(shí)施例的流程示意圖;
[0093]圖4是本發(fā)明的應(yīng)用程序自我保護(hù)裝置的一個實(shí)施例的原理框圖。
【具體實(shí)施方式】
[0094]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0095]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
[0096]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
[0097]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,這里所使用的“終端”、“終端設(shè)備”既包括無線信號接收器的設(shè)備,其僅具備無發(fā)射能力的無線信號接收器的設(shè)備,又包括接收和發(fā)射硬件的設(shè)備,其具有能夠在雙向通信鏈路上,執(zhí)行雙向通信的接收和發(fā)射硬件的設(shè)備。這種設(shè)備可以包括:蜂窩或其他通信設(shè)備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示器的蜂窩或其他通信設(shè)備0011111111111081:10118 361^1(36,個人通信系統(tǒng)),其可以組合語音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;?0181仏1八,個人數(shù)字助理),其可以包括射頻接收器、尋呼機(jī)、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)訪問、網(wǎng)絡(luò)瀏覽器、記事本、日歷和/或⑶3?0811:10111118 3781:6111,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計算機(jī)或其他設(shè)備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計算機(jī)或其他設(shè)備。這里所使用的“終端”、“終端設(shè)備”可以是便攜式、可運(yùn)輸、安裝在交通工具(航空、海運(yùn)和/或陸地)中的,或者適合于和/或配置為在本地運(yùn)行,和/或以分布形式,運(yùn)行在地球和/或空間的任何其他位置運(yùn)行。這里所使用的“終端”、“終端設(shè)備”還可以是通信終端、上網(wǎng)終端、音樂/視頻播放終端,例如可以是八、110 (10)3116 1=1:611161: 06V 1。6,移動互聯(lián)網(wǎng)設(shè)備)和/或具有音樂/視頻播放功能的移動電話,也可以是智能電視、機(jī)頂盒等設(shè)備。
[0098]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,這里所使用的服務(wù)器、云端、遠(yuǎn)端網(wǎng)絡(luò)設(shè)備等概念,具有等同效果,其包括但不限于計算機(jī)、網(wǎng)絡(luò)主機(jī)、單個網(wǎng)絡(luò)服務(wù)器、多個網(wǎng)絡(luò)服務(wù)器集或多個服務(wù)器構(gòu)成的云。在此,云由基于云計算(01011(1 001111)111:1118)的大量計算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計算是分布式計算的一種,由一群松散耦合的計算機(jī)集組成的一個超級虛擬計算機(jī)。本發(fā)明的實(shí)施例中,遠(yuǎn)端網(wǎng)絡(luò)設(shè)備、終端設(shè)備與I吧服務(wù)器之間可通過任何通信方式實(shí)現(xiàn)通信,包括但不限于,基于3即?、1^2、111^的移動通信、基于扣?/〗?、^)?協(xié)議的計算機(jī)網(wǎng)絡(luò)通信以及基于藍(lán)牙、紅外傳輸標(biāo)準(zhǔn)的近距無線傳輸方式。
[0099]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明所稱的“應(yīng)用”、“應(yīng)用程序”、“應(yīng)用軟件”以及類似表述的概念,是業(yè)內(nèi)技術(shù)人員所公知的相同概念,是指由一系列計算機(jī)指令及相關(guān)數(shù)據(jù)資源有機(jī)構(gòu)造的適于電子運(yùn)行的計算機(jī)軟件。除非特別指定,這種命名本身不受編程語言種類、級別,也不受其賴以運(yùn)行的操作系統(tǒng)或平臺所限制。理所當(dāng)然地,此類概念也不受任何形式的終端所限制。
[0100]本發(fā)明的有關(guān)方法和裝置的應(yīng)用場景,在基于此匕系為基礎(chǔ)的操作系統(tǒng)環(huán)境中實(shí)現(xiàn)的。為了實(shí)現(xiàn)本發(fā)明的功能,需要將本發(fā)明有關(guān)的方法和裝置實(shí)例化成應(yīng)用程序,獲取%於權(quán)限,將應(yīng)用程序安裝并運(yùn)行于相關(guān)操作系統(tǒng)中。
[0101]眾所周知,0001:權(quán)限是指類操作系統(tǒng)(包括的系統(tǒng)管理員權(quán)限,類似于1111(10界8(視窗)系統(tǒng)中的八(11111111管理員)權(quán)限權(quán)限可以訪問和修改用戶的移動設(shè)備中幾乎所有的文件(八11(601(1系統(tǒng)文件及用戶文件,不包括801)。但是,由于目前移動終端系統(tǒng)對于%0丨權(quán)限的管理是非常嚴(yán)格的,通常情況下多數(shù)應(yīng)用或程序都不具備丨權(quán)限,因此對于某些需要具備丨權(quán)限的操作就無法執(zhí)行,例如安裝或卸載應(yīng)用等操作;同時,此類操作調(diào)用進(jìn)程每次執(zhí)行相應(yīng)操作時都需要向系統(tǒng)申請%0七權(quán)限,但如果此時其他應(yīng)用進(jìn)程正在使用%於權(quán)限進(jìn)行相關(guān)操作,則此調(diào)用進(jìn)程的%於權(quán)限申請便無法成功;更甚者,如果用戶在系統(tǒng)中設(shè)置了禁用〖權(quán)限的操作,則相關(guān)調(diào)用進(jìn)程便無法進(jìn)行相關(guān)操作?;诖?,本發(fā)明提出只需要向系統(tǒng)發(fā)送一次權(quán)限獲取請求,具體可通過調(diào)用系統(tǒng)內(nèi)置的1)861',超級用戶)命令獲取0001:權(quán)限,或者通過獲取具有%0丨權(quán)限的8—11獲取%0丨權(quán)限并在8—11中啟動進(jìn)程,然后在獲取所述系統(tǒng)的
權(quán)限授權(quán)后,即可使后續(xù)其他調(diào)用進(jìn)程需執(zhí)行相關(guān)操作時無需重復(fù)申請權(quán)限;具體尺00丨權(quán)限獲取過程可參照現(xiàn)有技術(shù)的%0丨權(quán)限調(diào)用函數(shù),本發(fā)明在此不再贅述。
[0102]需要說明的是,本發(fā)明試圖結(jié)合計算機(jī)程序的靜態(tài)和動態(tài)兩個方面進(jìn)行描述,所謂靜態(tài)方面,是指程序安裝包、文件、數(shù)據(jù)庫等存儲于媒介的存儲對象;所謂動態(tài)方面,是指被調(diào)入內(nèi)存中執(zhí)行的動態(tài)對象,包括但不局限于進(jìn)程、線程、所用到的數(shù)據(jù)等。鑒于計算機(jī)軟件技術(shù)的這些特點(diǎn),不應(yīng)將本發(fā)明所述及的各個方法、步驟、子步驟、裝置、單元、模塊、子模塊等,孤立地理解為僅靜態(tài)或僅動態(tài)的方面,本領(lǐng)域技術(shù)人員對此應(yīng)當(dāng)知曉。故而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)能夠依據(jù)本發(fā)明有關(guān)靜態(tài)的表述而將其對應(yīng)到動態(tài)的進(jìn)程活動,或者依據(jù)本發(fā)明有關(guān)動態(tài)的進(jìn)程活動對應(yīng)到其靜態(tài)的表現(xiàn)形式,建立起靜態(tài)與動態(tài)兩方面的必然性關(guān)聯(lián),以此為基礎(chǔ)來理解本發(fā)明。
[0103]本發(fā)明的整體構(gòu)思可以靈活地體現(xiàn)于多個方面,因此,本發(fā)明可以實(shí)現(xiàn)為多個方法和裝置,分別著重于不同側(cè)面解決現(xiàn)有技術(shù)存在的問題。
[0104]以下結(jié)合圖1詳細(xì)揭示本發(fā)明的一種應(yīng)用程序卸載跟蹤方法,該方法將提供一種適于對如^01(1操作系統(tǒng)的應(yīng)用程序的卸載過程進(jìn)行跟蹤的方案。由此,該方法包括如下步驟:
[0105]311、由注冊到系統(tǒng)底層的卸載服務(wù)進(jìn)程截獲卸載該應(yīng)用程序的行為。
[0106]本實(shí)施例所稱的卸載服務(wù)進(jìn)程,是指由以本方法所實(shí)現(xiàn)的一個程序模塊,運(yùn)行于內(nèi)存中,通過內(nèi)存中的相應(yīng)主進(jìn)程實(shí)現(xiàn)如前所述的提權(quán)操作后,向系統(tǒng)注冊的一個通信服務(wù)進(jìn)程。以八為例,該卸載服務(wù)進(jìn)程基于八11(11X11(1系統(tǒng)所提供的8111(161'機(jī)制,向8781:6111此的陰!"注冊,通過八提供的固有的機(jī)制,在卸載服務(wù)進(jìn)程與其監(jiān)聽的客戶端服務(wù)進(jìn)程之間建立¢:/3架構(gòu)的溝通管道。具體而言,當(dāng)獲取到系統(tǒng)的權(quán)限后,為了便于后續(xù)實(shí)現(xiàn)對系統(tǒng)中其它進(jìn)程的監(jiān)聽以及相關(guān)操作功能,本發(fā)明首先啟動具有已經(jīng)獲得權(quán)限的由本方法實(shí)例化后得以運(yùn)行而形成的主進(jìn)程,通過主進(jìn)程在系統(tǒng)中插入所述卸載服務(wù)進(jìn)程,例如具體可通過系統(tǒng)調(diào)用函數(shù)361^1061冊叫61\ 8(1(1861-^106 ()來實(shí)現(xiàn)插入操作,由此實(shí)現(xiàn)對本方法實(shí)例化程序所構(gòu)造的卸載服務(wù)進(jìn)程的成功注冊,卸載服務(wù)進(jìn)程由此成為系統(tǒng)底層級別的卸載服務(wù)進(jìn)程。需要注意的是,所述卸載服務(wù)進(jìn)程通過上述的配置,已經(jīng)成為系統(tǒng)級別的服務(wù)進(jìn)程,其權(quán)限顯然高于其他用戶層服務(wù)進(jìn)程或應(yīng)用進(jìn)程的權(quán)限,因此該卸載服務(wù)進(jìn)程可以作為通信基礎(chǔ),為其他調(diào)用它的進(jìn)程提供通信保障,完成系統(tǒng)與其他調(diào)用它的進(jìn)程之間的通信連接。由此也可以進(jìn)一步推知,其他任何遵守本發(fā)明的卸載服務(wù)進(jìn)程的接口規(guī)范的客戶端,均可通過81&61'機(jī)制與本發(fā)明的卸載服務(wù)進(jìn)程進(jìn)行通信,從而與卸載服務(wù)進(jìn)程相配合執(zhí)行一系列的內(nèi)存操作,完成特定任務(wù)。
[0107]因此,所述的卸載服務(wù)進(jìn)程,具有向其注冊的用戶層客戶端服務(wù)進(jìn)程的通信能力,兩者之間基于81=(161機(jī)制進(jìn)行通信,這種通信方式具有快速穩(wěn)定的特點(diǎn)。對于本方法的核心要旨而言,所述卸載服務(wù)進(jìn)程主要用于實(shí)施對系統(tǒng)包管理服務(wù)進(jìn)程的監(jiān)控,以便截獲包管理服務(wù)進(jìn)程用于卸載某一應(yīng)用程序的行為,這一行為主要是指通過函數(shù)調(diào)用激起的指令操作事件行為。
[0108]所述的包管理服務(wù)進(jìn)程,即(913)的相關(guān)進(jìn)程,在其運(yùn)行過程中,當(dāng)某一因素企圖卸載某一應(yīng)用程序時,就會發(fā)送一個1社6社給1)1111181:81161'八0七1乂11:7,在 1)1111181:81161-^01:1^11:7 最后會啟動 1)1111181:81
的方法,并調(diào)用如下卸載函數(shù)丨陰切狀&叫一此的陰!" 0.(16161:6^80^886 (),^61:?80^88618118861~ ()函數(shù)的實(shí)現(xiàn)在中,它最后會調(diào)用到
11白勺己616七6?80垃8呂6 方法,而己616七6?80垃8呂6 77 一/1?X
會調(diào)用八81)861'方法......由此,通過一系列的函數(shù)調(diào)用而實(shí)施對待卸載應(yīng)用程序的卸載過程,最終從?13內(nèi)部結(jié)構(gòu)上刪除包括八01:1^11:7、86^106?
1?6061^61~等組件,刪除00(16、和1*680111X6等信息,調(diào)用11181^11(1刪除/也仏/也七已/以及等應(yīng)用安裝目錄下面的文件,更新中的信息等等。這一過程是八系統(tǒng)固有的應(yīng)用程序卸載實(shí)施過程。可以看出,通過對其中包括叫6()在內(nèi)的相關(guān)函數(shù)的監(jiān)控,均可獲知?13正在卸載某一應(yīng)用程序的事件行為。通過技術(shù)手段截獲這一事件行為,便可在?13卸載該應(yīng)用程序之前,對其卸載行為實(shí)施放行、暫停、阻止等干預(yù)。
[0109]在本發(fā)明的一個實(shí)施例中,卸載服務(wù)進(jìn)程通過由自身構(gòu)造一個監(jiān)控單元110 (參閱圖2,下同)實(shí)現(xiàn)對前述卸載應(yīng)用程序的行為的監(jiān)控。具體而言,可以通過監(jiān)控?13正式實(shí)施卸載動作之前的一個或多個函數(shù)來實(shí)現(xiàn),諸如(16161:692101^186()、1()、(16161:6^80^6^811861-()等。由此截獲卸載應(yīng)用程序的行為,對應(yīng)用程序卸載過程實(shí)施必要的干預(yù)。
[0110]具體而言,所述監(jiān)控單元的采用此仏技術(shù)實(shí)現(xiàn),利用鉤子函數(shù)對包管理服務(wù)進(jìn)程中的與卸載應(yīng)用程序相關(guān)的諸如上述所列的任意一個函數(shù)的運(yùn)行入口點(diǎn)進(jìn)行監(jiān)視,當(dāng)其運(yùn)行至該入口點(diǎn)時,即截獲對該函數(shù)的調(diào)用,轉(zhuǎn)向執(zhí)行監(jiān)控單元所實(shí)現(xiàn)的相應(yīng)的鉤子函數(shù),由該鉤子函數(shù)依據(jù)自身實(shí)現(xiàn)邏輯,利用自定義數(shù)據(jù)來應(yīng)答所述包服務(wù)管理進(jìn)程中被截獲的相應(yīng)函數(shù)的調(diào)用者,從而達(dá)到前述的目的??匆钥闯觯坏┺D(zhuǎn)向執(zhí)行鉤子函數(shù),的既有進(jìn)程相應(yīng)被暫停。
[0111]所述的監(jiān)控單元向所述調(diào)用者返回的自定義數(shù)據(jù),是指由監(jiān)控單元預(yù)定的向所述調(diào)用者反饋的數(shù)據(jù),并不排除系統(tǒng)固有常量,例如,監(jiān)控單元可以通過向所述調(diào)用者返回系統(tǒng)預(yù)留的空值標(biāo)識,來導(dǎo)致?13進(jìn)程無法繼續(xù)卸載相應(yīng)的應(yīng)用程序,也可以繼續(xù)向?13進(jìn)程的后續(xù)指令繼續(xù)傳遞監(jiān)控單元所截獲的1社6社而實(shí)現(xiàn)對進(jìn)程放行卸載等。本領(lǐng)域技術(shù)人員基于鉤子線程相關(guān)的技術(shù)原理,應(yīng)當(dāng)知曉這些變通。
[0112]這里需要補(bǔ)充的是:術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子—函數(shù)。鉤子通常用于各種目標(biāo),包括對功能進(jìn)行調(diào)試和對功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用(^11)、或者系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實(shí)施例即可采用鉤子—函數(shù)接管所述應(yīng)用程序運(yùn)行時所需的安裝自校驗(yàn)操作。
[0113]由此可見,通過已經(jīng)預(yù)注冊到系統(tǒng)底層的卸載服務(wù)進(jìn)程對包管理服務(wù)進(jìn)程實(shí)施監(jiān)控,便可截獲用于卸載目標(biāo)應(yīng)用程序的事件行為,卸載服務(wù)進(jìn)程基于該行為可以做進(jìn)一步的處理。
[0114]步驟312、由卸載服務(wù)進(jìn)程將該行為通知與其通信的客戶端服務(wù)進(jìn)程。
[0115]卸載服務(wù)進(jìn)程截獲卸載目標(biāo)應(yīng)用程序的行為后,以前述示例為基礎(chǔ),主要是其監(jiān)控單元實(shí)施這一操作,卸載服務(wù)進(jìn)程進(jìn)而可以將該行為通知給客戶端服務(wù)進(jìn)程,以交由客戶端服務(wù)進(jìn)程做相應(yīng)的處理,等候客戶端服務(wù)進(jìn)程進(jìn)行相應(yīng)的處理后反饋的信息,再決定是否放行或阻止進(jìn)程對目標(biāo)應(yīng)用程序的卸載。
[0116]有必要強(qiáng)調(diào)卸載服務(wù)進(jìn)程與客戶端服務(wù)進(jìn)程的區(qū)別。依據(jù)如^01(1原理,所述卸載服務(wù)進(jìn)程是注冊到系統(tǒng)底層的,而客戶端服務(wù)進(jìn)程則屬于用戶層的,客戶端服務(wù)進(jìn)程被調(diào)用運(yùn)行時,以方法建立起客戶端服務(wù)進(jìn)程與卸載服務(wù)進(jìn)程之間的連接,兩者之間便建立起類似于以3架構(gòu)的通信渠道,因此,客戶端服務(wù)進(jìn)程與卸載服務(wù)進(jìn)程之間可以通過彼此約定的接口實(shí)現(xiàn)對各自功能和參數(shù)的調(diào)用。在本發(fā)明的,作為示例,所述卸載服務(wù)進(jìn)程可以在截獲相應(yīng)函數(shù)的1的6#后,獲知待卸載應(yīng)用程序的包名,向客戶端服務(wù)進(jìn)程傳遞該包名,以便客戶端服務(wù)進(jìn)程據(jù)此執(zhí)行后續(xù)處理。當(dāng)然,實(shí)踐中,卸載服務(wù)進(jìn)程可以傳遞給客戶端服務(wù)進(jìn)程各類參數(shù),并不受限,本領(lǐng)域技術(shù)人員可以靈活實(shí)現(xiàn)。
[0117]因此,可以看出,客戶端服務(wù)進(jìn)程所獲得的通知,是基于81&61'機(jī)制獲得的,依據(jù)這一機(jī)制,客戶端服務(wù)進(jìn)程可以順利地與卸載服務(wù)進(jìn)程進(jìn)行參數(shù)傳遞和相關(guān)功能調(diào)用。
[0118]步驟313、由客戶端服務(wù)進(jìn)程還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)進(jìn)程放行所述卸載應(yīng)用程序的行為。
[0119]本發(fā)明的一個實(shí)施例執(zhí)行本步驟時,是以最簡化的方式執(zhí)行的。因此,客戶端服務(wù)進(jìn)程獲得所述卸載服務(wù)進(jìn)程的通知后,作為關(guān)鍵動作,識別該通知所包含的包名,以確定所針對的待卸載目標(biāo)應(yīng)用程序,然后執(zhí)行還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的活動。
[0120]但是,作為變例,客戶端服務(wù)單元的實(shí)現(xiàn),可以結(jié)合如下多種情形演化更多的變例。需要指出的是,卸載服務(wù)進(jìn)程、客戶端服務(wù)進(jìn)程以及所述待卸載的應(yīng)用程序之間,可以存在多種相互結(jié)合的關(guān)系,以構(gòu)成多種變例,具體如下:
[0121]1、所述待卸載的應(yīng)用程序是用于實(shí)現(xiàn)所述卸載服務(wù)進(jìn)程、客戶端服務(wù)進(jìn)程的同一安全軟件。
[0122]2、所述待卸載的應(yīng)用程序與客戶端服務(wù)進(jìn)程屬于同一應(yīng)用程序,而所述卸載服務(wù)進(jìn)程由另一安全軟件構(gòu)建。
[0123]3、所述客戶端服務(wù)進(jìn)程、卸載服務(wù)進(jìn)程均由同一安全軟件構(gòu)建,而獨(dú)立于所述待卸載的應(yīng)用程序。
[0124]以上幾種變例也意味著本發(fā)明的客戶端服務(wù)進(jìn)程既可以處理自身所屬的應(yīng)用程序的卸載前控制,也可以處理受自身保護(hù)的應(yīng)用程序的卸載前控制。具體而言,卸載服務(wù)進(jìn)程通知客戶端服務(wù)進(jìn)程后,客戶端服務(wù)進(jìn)程提取該通知所包含的包名并先與自身所屬應(yīng)用程序的包名進(jìn)行比較以做出判斷,或者進(jìn)一步判斷該通知中的包名是否屬于已經(jīng)記錄的一個受保護(hù)應(yīng)用程序列表中的某一個,針對不同的判斷結(jié)果,分為兩種情況,執(zhí)行不同的功倉泛。
[0125]客戶端服務(wù)進(jìn)程執(zhí)行判斷后,所劃分的兩種情況以及各種情況的處理邏輯如下:
[0126]1、當(dāng)客戶端服務(wù)進(jìn)程判斷卸載服務(wù)進(jìn)程發(fā)送的通知中的包名屬于受保護(hù)應(yīng)用程序列表中的應(yīng)用程序,或者屬于客戶端服務(wù)進(jìn)程自身所屬的應(yīng)用程序時,可以調(diào)用客戶端服務(wù)進(jìn)程的控制邏輯加以處理,然后才通知卸載服務(wù)進(jìn)程放行對該應(yīng)用程序的卸載;
[0127]2、客戶端服務(wù)進(jìn)程判斷卸載服務(wù)進(jìn)程發(fā)送的通知中的包名不屬于自身所在的應(yīng)用程序時,或者進(jìn)一步確定亦不屬于受保護(hù)應(yīng)用程序列表中的應(yīng)用程序時,則直接通知卸載服務(wù)進(jìn)程放行對該應(yīng)用程序的卸載。
[0128]在本發(fā)明進(jìn)一步完善的一個實(shí)施例中,所述客戶端服務(wù)進(jìn)程收到卸載服務(wù)進(jìn)程的通知后,可以向系統(tǒng)界面彈出詢問窗口,通過該窗口詢問客戶是否允許待卸載應(yīng)用程序的卸載,提供類似于“允許”、“拒絕”的選項(xiàng)供用戶選定,以此接收表征用戶允許或不允許卸載該應(yīng)用程序的指令,當(dāng)?shù)皆撝噶詈?,做出兩種相應(yīng)的處理,其一是通知卸載服務(wù)進(jìn)程(一個實(shí)施例中是其監(jiān)控單元)放行進(jìn)程對待卸載應(yīng)用程序的卸載;其二是通知卸載服務(wù)進(jìn)程(其監(jiān)控單元)向進(jìn)程返回空值以便阻止進(jìn)程對待卸載應(yīng)用程序的卸載。
[0129]客戶端服務(wù)進(jìn)程的這一處理方法,適宜前置于客戶端服務(wù)進(jìn)程對包名的判斷而進(jìn)行,也可以僅僅針對第一種判斷情況,也即包名相同的情況而執(zhí)行本處理方法。具體而言,針對前后兩者,也能夠?qū)е卤景l(fā)明產(chǎn)生更多的如下的變例:
[0130]對于前者,一接收到卸載服務(wù)進(jìn)程的通知即彈窗告警,如果用戶允許卸載,則先判斷包名是否相同(包括與客戶端服務(wù)進(jìn)程自身所在的應(yīng)用程序的包名和/或受保護(hù)應(yīng)用程序列表中的應(yīng)用程序包名比較),如相同,進(jìn)一步調(diào)用客戶端服務(wù)進(jìn)程的控制邏輯加以處理,然后才通知卸載服務(wù)進(jìn)程放行對該應(yīng)用程序的卸載,如果包名不同,則直接通知放行卸載;如果用戶不允許卸載,則通知卸載服務(wù)進(jìn)程阻止進(jìn)程對該應(yīng)用程序的卸載。
[0131]對于后者,當(dāng)客戶端服務(wù)進(jìn)程接收到卸載服務(wù)進(jìn)程的通知,判斷包名相同(同上)后,才彈窗告警,如果用戶允許卸載,則進(jìn)一步調(diào)用客戶端服務(wù)進(jìn)程的控制邏輯加以處理,然后才通知卸載服務(wù)進(jìn)程放行?13對該應(yīng)用程序的卸載;如果包名不同,則直接通知放行卸載;如果用戶不允許卸載,則通知卸載服務(wù)進(jìn)程阻止進(jìn)程對該應(yīng)用程序的卸載。
[0132]如前所述,所述客戶端服務(wù)進(jìn)程在用戶確定允許目標(biāo)應(yīng)用程序被卸載后,便按照其自身實(shí)現(xiàn)的控制邏輯做后續(xù)處理。這一控制邏輯所實(shí)現(xiàn)的控制內(nèi)容主要包括若干可選的方面的任意一項(xiàng)或任意多項(xiàng)。以下列出這些不同方面并加以闡釋,供本領(lǐng)域技術(shù)人員參昭.
[0133]1、還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指清除由該應(yīng)用程序增添的數(shù)據(jù)。眾所周知的,應(yīng)用程序在正常使用過程中,都會產(chǎn)生一些數(shù)據(jù),主要是以文件的形式保存到相關(guān)目錄中,例如手機(jī)30卡的存儲目錄中。一旦應(yīng)用程序被刪除,往往這些數(shù)據(jù)文件也不再有用,因此,可以被清理。適應(yīng)這一方面,客戶端服務(wù)進(jìn)程可以將待卸載應(yīng)用程序所增添的這些文件夾以及相應(yīng)的文件之類的數(shù)據(jù)予以刪除,通過刪除其產(chǎn)生的數(shù)據(jù)而實(shí)現(xiàn)將特定存儲空間的數(shù)據(jù)從占有還原到清零的狀態(tài),由此而實(shí)現(xiàn)數(shù)據(jù)還原。
[0134]2、還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由待卸載應(yīng)用程序修改的數(shù)據(jù)。同理,待卸載應(yīng)用程序,特別是一些安全軟件,或者一些涉及系統(tǒng)配置信息改變的軟件,例如,一種可以通過修改活動管理服務(wù)進(jìn)程^18)的廣播接收器注冊數(shù)據(jù)而控制與這些廣播接收器相關(guān)的應(yīng)用程序的自啟動能力的安全軟件,此類安全軟件對系統(tǒng)的注冊數(shù)據(jù)做出了修改,因此,在其被卸載之前適宜恢復(fù)由其做出過修改的注冊數(shù)據(jù),以免影響被修改了注冊信息的應(yīng)用程序的正常運(yùn)行。因此,本發(fā)明的客戶端服務(wù)進(jìn)程可以針對這種情況或者其他類似的情況,而恢復(fù)這些數(shù)據(jù)(例如安全軟件即是客戶端服務(wù)進(jìn)程的宿主,該安全軟件修改了所有第三方應(yīng)用程序的廣播接收器注冊信息并且記錄在一列表中,客戶端服務(wù)進(jìn)程便可以通過讀取該列表而獲知被修改的注冊數(shù)據(jù),或者不必依賴于列表,而通過掃描所有應(yīng)用程序的八XI?。?!文件的配置信息,據(jù)此而恢復(fù)這些注冊數(shù)據(jù))。
[0135]3、還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由待卸載應(yīng)用程序刪除的數(shù)據(jù)。與前述第2項(xiàng)同理,部分軟件可能出于某種目的而將某些文件刪除,這些刪除的文件同時被備份到臨時目錄。對于這種情況,客戶端服務(wù)進(jìn)程便可根據(jù)已知的規(guī)則或者相關(guān)的記錄信息,而將臨時目錄中的相應(yīng)文件恢復(fù)到原位置,而實(shí)現(xiàn)對由待卸載應(yīng)用程序刪除的數(shù)據(jù)的恢復(fù)。
[0136]4、還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。部分應(yīng)用程序運(yùn)行可能構(gòu)造有多個服務(wù)組件,這些服務(wù)組件在運(yùn)行時分別被綁定到不同的系統(tǒng)服務(wù)進(jìn)程中,以便提供后臺服務(wù),這些服務(wù)的突然中斷可能會影響到某些數(shù)據(jù)的正常傳輸?;蛘吣承┓?wù)進(jìn)程未經(jīng)終止,可能影響到其所屬的應(yīng)用程序的卸載。這些用戶層的服務(wù)進(jìn)程,是注冊到系統(tǒng)服務(wù)進(jìn)程中的,因此,在系統(tǒng)服務(wù)進(jìn)程的管理鏈表中便存在其注冊數(shù)據(jù)。本發(fā)明可以通過停止這些已注冊的用戶層的服務(wù)進(jìn)程,而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)到不存在這些用戶層服務(wù)進(jìn)程的狀態(tài)。
[0137]5、調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。軟件開發(fā)者往往期望獲知用戶對其應(yīng)用程序的使用感受,特別是卸載其應(yīng)用程序的原因,以便收集用戶對應(yīng)用程序的意見和改進(jìn)建議,以利于對其應(yīng)用程序做出改進(jìn)的決策。有時,在用戶因?yàn)檎`解企圖卸載該應(yīng)用程序時,通過網(wǎng)頁進(jìn)行適當(dāng)?shù)囊龑?dǎo),也有利于降低誤卸載率。因此,可以在所述客戶端服務(wù)進(jìn)程接收到卸載服務(wù)進(jìn)程的通知后,即通過函數(shù)調(diào)用一個包含了鏈接II此的1=1:6111:,該鏈接指向軟件開發(fā)者的一個預(yù)定網(wǎng)頁,運(yùn)行并訪問該網(wǎng)頁,與用戶做進(jìn)一步的人機(jī)交互。當(dāng)然,這一訪問網(wǎng)頁的手段也可以在客戶端服務(wù)進(jìn)程的整個生命周期的任何時間段給出,例如在其執(zhí)行完其它控制邏輯之后給出,具體是在客戶端服務(wù)進(jìn)程決定通知卸載待卸載應(yīng)用程序之前給出即可。
[0138]可以看出,以上幾種選項(xiàng)是可以任意選用的,并且,通常適合應(yīng)用于客戶端服務(wù)進(jìn)程由待卸載應(yīng)用程序?qū)崿F(xiàn)的實(shí)例中。但是,當(dāng)客戶端服務(wù)進(jìn)程獨(dú)立于應(yīng)用程序時,遵守其與應(yīng)用程序約定的協(xié)議,而在該應(yīng)用程序被卸載之前,由客戶端服務(wù)進(jìn)程實(shí)現(xiàn)上述的任意一個選項(xiàng),顯然也是可行的。
[0139]進(jìn)一步,上述的任意一個選項(xiàng),均可以被構(gòu)造為客戶端服務(wù)進(jìn)程的子模塊,其中的第1至4項(xiàng),因其邏輯相對契合,故可以將這些子模塊構(gòu)造到同一個還原模塊25 (參閱圖2,下同)中。當(dāng)然,還可以構(gòu)造一個訪問模塊(參閱圖2,下同)來實(shí)現(xiàn)調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁的功能。
[0140]需要進(jìn)一步指出的是,所述客戶端服務(wù)進(jìn)程向卸載服務(wù)進(jìn)程反饋通知時,可以簡單地只給出兩種形式,即表征允許或拒絕卸載原來待卸載的應(yīng)用程序的兩種不同形式。因此,對于卸載服務(wù)進(jìn)程而言,只需依據(jù)客戶端服務(wù)進(jìn)程的兩種不同形式而做出不同的處理。
在卸載過程,由于被卸載服務(wù)進(jìn)程監(jiān)控并截獲,由于需要等候卸載服務(wù)進(jìn)程對進(jìn)程資源的釋放,而處于暫停狀態(tài)。卸載服務(wù)進(jìn)程獲得客戶端服務(wù)進(jìn)程的反饋通知后,依據(jù)表征允許的通知,便可直接將進(jìn)程資源交還給卸載進(jìn)程,放行卸載進(jìn)程對待卸載應(yīng)用程序的卸載操作;依據(jù)表征拒絕的通知,卸載服務(wù)進(jìn)程可以將空值作為待給出的自定義數(shù)據(jù)返回給調(diào)用被截獲的函數(shù)如16丨一?狀匕陰0的上級函數(shù),從而以類似技術(shù)欺騙的手段阻止?13卸載原來的待卸載應(yīng)用程序,實(shí)現(xiàn)對這一應(yīng)用程序的保護(hù)。
[0141]進(jìn)一步,依據(jù)計算機(jī)軟件的功能模塊化思維,本發(fā)明提供一種應(yīng)用程序主動防御裝置,請參閱圖2,該裝置包括所述的卸載服務(wù)單元11和客戶端服務(wù)單元12。利用該卸載服務(wù)單元11和客戶端服務(wù)單元12來搭建起整個裝置的原理框架,從而實(shí)現(xiàn)模塊化實(shí)施方案。
[0142]所述的卸載服務(wù)單元11,是實(shí)現(xiàn)了前述方法中的卸載服務(wù)進(jìn)程的模塊化構(gòu)造的實(shí)例。該卸載服務(wù)單元11被一注冊單元(未圖示)預(yù)注冊到系統(tǒng)底層中,用于截獲卸載該應(yīng)用程序的行為,且將該行為通知與其通信的客戶端服務(wù)單元12。
[0143]本實(shí)施例所稱的卸載服務(wù)單元11,是指由前述方法中的服務(wù)進(jìn)程所構(gòu)造的一個程序模塊,運(yùn)行于內(nèi)存中,通過內(nèi)存中的相應(yīng)主進(jìn)程實(shí)現(xiàn)如前所述的提權(quán)操作后,向系統(tǒng)注冊的一個卸載服務(wù)單元11。以八為例,該卸載服務(wù)單元11基于八系統(tǒng)所提供的 8111(161'機(jī)制,向卸載服務(wù)單元11與其監(jiān)聽的客戶端服務(wù)單元12之間建立以3架構(gòu)的溝通管道。具體而言,當(dāng)獲取到系統(tǒng)的如於權(quán)限后,為了便于后續(xù)實(shí)現(xiàn)對系統(tǒng)中其它進(jìn)程的監(jiān)聽以及相關(guān)操作功能,本發(fā)明首先啟動具有已經(jīng)獲得權(quán)限的由前述方法實(shí)例化后得以運(yùn)行而形成的主進(jìn)程,通過主進(jìn)程在系統(tǒng)中插入所述卸載服務(wù)單元11,例如具體可通過系統(tǒng)調(diào)用函數(shù)861-^10618118861'- £1(1(1861-^106 ()來實(shí)現(xiàn)插入操作,由此實(shí)現(xiàn)對前述方法實(shí)例化程序所構(gòu)造的卸載服務(wù)單元11的成功注冊,卸載服務(wù)單元11由此成為系統(tǒng)底層級別的卸載服務(wù)單元
11。需要注意的是,所述卸載服務(wù)單元11通過上述的配置,已經(jīng)成為系統(tǒng)級別的服務(wù)進(jìn)程,其權(quán)限顯然高于其他用戶層服務(wù)進(jìn)程或應(yīng)用進(jìn)程的權(quán)限,因此該卸載服務(wù)單元11可以作為通信基礎(chǔ),為其他調(diào)用它的進(jìn)程提供通信保障,完成系統(tǒng)與其他調(diào)用它的進(jìn)程之間的通信連接。由此也可以進(jìn)一步推知,其他任何遵守本發(fā)明的卸載服務(wù)單元11的接口規(guī)范的客戶端,均可通過81&61'機(jī)制與本發(fā)明的卸載服務(wù)單元11進(jìn)行通信,從而與卸載服務(wù)單元11相配合執(zhí)行一系列的內(nèi)存操作,完成特定任務(wù)。
[0144]因此,所述的卸載服務(wù)單元11,具有向其注冊的用戶層客戶端服務(wù)單元12發(fā)送通知和接收反饋通知的通信能力,兩者之間基于81=(161機(jī)制進(jìn)行通信,這種通信方式具有快速穩(wěn)定的特點(diǎn)。對于本裝置的核心功能而言,所述卸載服務(wù)單元11主要用于實(shí)施對系統(tǒng)包管理服務(wù)進(jìn)程的監(jiān)控,以便截獲包管理服務(wù)進(jìn)程用于卸載某一應(yīng)用程序的行為,這一行為主要是指通過函數(shù)調(diào)用導(dǎo)致的指令操作事件行為。
[0145]所述的包管理服務(wù)進(jìn)程,即(913)的相關(guān)進(jìn)程,在其運(yùn)行過程中,當(dāng)某一因素企圖卸載某一應(yīng)用程序時,就會發(fā)送一個1社6社給1)1111181:81161'八0七1乂11:7,在 1)1111181:81161-^01:1^11:7 最后會啟動 1)1111181:81
的方法,并調(diào)用如下卸載函數(shù)0.(16161:6^80^886 (),^61:?80^88618118861~ ()函數(shù)的實(shí)現(xiàn)在中,它最后會調(diào)用到
11白勺己616七6?80垃8呂6 方法,而己616七6?80垃8呂6 77 一/1?X
會調(diào)用八81)861'方法......由此,通過一系列的函數(shù)調(diào)用而實(shí)施對待卸載應(yīng)用程序的卸載過程,最終從?13內(nèi)部結(jié)構(gòu)上刪除包括八01:1^11:7、86^106?
1?6061^61~ 等 ^11(11-01(1 組件,刪除⑶己6、11131~81~7 和 1*680111X6 等信息,調(diào)用 11181:811(1 刪除 /
以及(對于非系統(tǒng)預(yù)裝的第三方應(yīng)用而言)等應(yīng)用安裝目錄下面的文件,更新361:1:11188中的?^^叫6信息等等。這一過程是八II系統(tǒng)固有的應(yīng)用程序卸載實(shí)施過程??梢钥闯?,通過對其中包括(16161:6921(31^186()在內(nèi)的相關(guān)函數(shù)的監(jiān)控,均可獲知?13正在卸載某一應(yīng)用程序的事件行為。通過技術(shù)手段截獲這一事件行為,便可在卸載該應(yīng)用程序之前,對其卸載行為實(shí)施放行、暫停、阻止等干預(yù)。
[0146]在本發(fā)明的一個實(shí)施例中,卸載服務(wù)單元11通過由自身構(gòu)造一個監(jiān)控單元110實(shí)現(xiàn)對前述卸載應(yīng)用程序的行為的監(jiān)控。具體而言,可以通過監(jiān)控?13正式實(shí)施卸載動作之前的一個或多個函數(shù)來實(shí)現(xiàn),諸如 016161:6?狀1^叫6 0、1 = 0 ? (16161:6^80^8^6^811861-()等。由此截獲卸載應(yīng)用程序的行為,對應(yīng)用程序卸載過程實(shí)施必要的干預(yù)。
[0147]具體而言,所述監(jiān)控單元110的采用此仏技術(shù)實(shí)現(xiàn),利用鉤子函數(shù)對包管理服務(wù)進(jìn)程中的與卸載應(yīng)用程序相關(guān)的諸如上述所列的任意一個函數(shù)的運(yùn)行入口點(diǎn)進(jìn)行監(jiān)視,當(dāng)其運(yùn)行至該入口點(diǎn)時,即截獲對該函數(shù)的調(diào)用,轉(zhuǎn)向執(zhí)行監(jiān)控單元110所實(shí)現(xiàn)的相應(yīng)的鉤子函數(shù),由該鉤子函數(shù)依據(jù)自身實(shí)現(xiàn)邏輯,利用自定義數(shù)據(jù)來應(yīng)答所述包服務(wù)管理進(jìn)程中被截獲的相應(yīng)函數(shù)的調(diào)用者,從而達(dá)到前述的目的??匆钥闯觯坏┺D(zhuǎn)向執(zhí)行鉤子函數(shù),?13的既有進(jìn)程相應(yīng)被暫停。
[0148]所述的監(jiān)控單元110向所述調(diào)用者返回的自定義數(shù)據(jù),是指由監(jiān)控單元110預(yù)定的向所述調(diào)用者反饋的數(shù)據(jù),并不排除系統(tǒng)固有常量,例如,監(jiān)控單元110可以通過向所述調(diào)用者返回系統(tǒng)預(yù)留的空值標(biāo)識,來導(dǎo)致?13進(jìn)程無法繼續(xù)卸載相應(yīng)的應(yīng)用程序,也可以繼續(xù)向進(jìn)程的后續(xù)指令繼續(xù)傳遞監(jiān)控單元110所截獲的1111:6111:而實(shí)現(xiàn)對?13進(jìn)程放行卸載等。本領(lǐng)域技術(shù)人員基于鉤子線程相關(guān)的技術(shù)原理,應(yīng)當(dāng)知曉這些變通。
[0149]這里需要補(bǔ)充的是:術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子—函數(shù)。鉤子通常用于各種目標(biāo),包括對功能進(jìn)行調(diào)試和對功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用(^11)、或者系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實(shí)施例即可采用鉤子—函數(shù)接管所述應(yīng)用程序運(yùn)行時所需的安裝自校驗(yàn)操作。
[0150]由此可見,通過已經(jīng)預(yù)注冊到系統(tǒng)底層的卸載服務(wù)單元11對包管理服務(wù)進(jìn)程實(shí)施監(jiān)控,便可截獲用于卸載目標(biāo)應(yīng)用程序的事件行為,卸載服務(wù)單元11基于該行為可以做進(jìn)一步的處理,進(jìn)一步將該行為通知與其通信的客戶端服務(wù)單元12。
[0151]卸載服務(wù)單元11截獲卸載目標(biāo)應(yīng)用程序的行為后,以前述示例為基礎(chǔ),主要借助屬于其內(nèi)部構(gòu)造的監(jiān)控單元110實(shí)施這一操作,卸載服務(wù)單元11進(jìn)而可以將該行為通知給客戶端服務(wù)單元12,以交由客戶端服務(wù)單元12做相應(yīng)的處理,等候客戶端服務(wù)單元12進(jìn)行相應(yīng)的處理后反饋的信息,再決定是否放行或阻止進(jìn)程對目標(biāo)應(yīng)用程序的卸載。
[0152]有必要強(qiáng)調(diào)卸載服務(wù)單元11與客戶端服務(wù)單元12的區(qū)別。所述的客戶端服務(wù)單元12,是實(shí)現(xiàn)了前述方法所揭示客戶端服務(wù)進(jìn)程的模塊化構(gòu)造的實(shí)例。依據(jù)如^01(1原理,所述卸載服務(wù)單元11是注冊到系統(tǒng)底層的,而客戶端服務(wù)單元12則屬于用戶層的,客戶端服務(wù)單元12被調(diào)用運(yùn)行時,以⑶0方法建立起客戶端服務(wù)單元12與卸載服務(wù)單元11之間的連接,兩者之間便建立起類似于以3架構(gòu)的通信渠道,因此,客戶端服務(wù)單元12與卸載服務(wù)單元11之間可以通過彼此約定的接口實(shí)現(xiàn)對各自功能和參數(shù)的調(diào)用。在本發(fā)明的,作為示例,所述卸載服務(wù)單元11可以在截獲相應(yīng)函數(shù)的1社6#后,獲知待卸載應(yīng)用程序的包名,向客戶端服務(wù)單元12傳遞該包名,以便客戶端服務(wù)單元12據(jù)此執(zhí)行后續(xù)處理。當(dāng)然,實(shí)踐中,卸載服務(wù)單元11可以傳遞給客戶端服務(wù)單元12各類參數(shù),反之客戶端服務(wù)單元12也然,并不受限,本領(lǐng)域技術(shù)人員可以靈活實(shí)現(xiàn)。
[0153]因此,可以看出,客戶端服務(wù)單元12所獲得的通知,是基于機(jī)制獲得的,依據(jù)這一機(jī)制,客戶端服務(wù)單元12可以順利地與卸載服務(wù)單元11進(jìn)行參數(shù)傳遞和相關(guān)功能調(diào)用。
[0154]所述的客戶端服務(wù)單元12,其核心功能在于還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)單元11放行所述卸載應(yīng)用程序的行為。
[0155]本發(fā)明的一個實(shí)施例中,客戶端服務(wù)單元12是以最簡化的方式執(zhí)行的。因此,客戶端服務(wù)單元12獲得所述卸載服務(wù)單元11的通知后,作為關(guān)鍵功能,識別該通知所包含的包名,以確定?13所針對的待卸載目標(biāo)應(yīng)用程序,然后執(zhí)行還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的活動。
[0156]但是,作為變例,客戶端服務(wù)單元12的實(shí)現(xiàn),可以結(jié)合如下多種情形演化更多的變例。需要指出的是,卸載服務(wù)單元11、客戶端服務(wù)單元12以及所述待卸載的應(yīng)用程序之間,可以存在多種相互結(jié)合的關(guān)系,以構(gòu)成多種變例,具體如下:
[0157]1、所述待卸載的應(yīng)用程序是用于實(shí)現(xiàn)所述卸載服務(wù)單元11、客戶端服務(wù)單元12的同一安全軟件。
[0158]2、所述待卸載的應(yīng)用程序與客戶端服務(wù)單元12屬于同一應(yīng)用程序,而所述卸載服務(wù)單元11由另一安全軟件構(gòu)建。
[0159]3、所述客戶端服務(wù)單元12、卸載服務(wù)單元11均由同一安全軟件構(gòu)建,而獨(dú)立于所述待卸載的應(yīng)用程序。
[0160]以上幾種變例也意味著本發(fā)明的客戶端服務(wù)單元12既可以處理自身所屬的應(yīng)用程序的卸載前控制,也可以處理受自身保護(hù)的應(yīng)用程序的卸載前控制。具體而言,卸載服務(wù)單元11通知客戶端服務(wù)單元12后,客戶端服務(wù)單元12提取該通知所包含的包名并先與自身所屬應(yīng)用程序的包名進(jìn)行比較以做出判斷,或者進(jìn)一步判斷該通知中的包名是否屬于已經(jīng)記錄的一個受保護(hù)應(yīng)用程序列表中的某一個,針對不同的判斷結(jié)果,分為兩種情況,執(zhí)行不同的功能。
[0161]客戶端服務(wù)單元12執(zhí)行判斷后,所劃分的兩種情況以及各種情況的處理邏輯如下:
[0162]1、當(dāng)客戶端服務(wù)單元12判斷卸載服務(wù)單元11發(fā)送的通知中的包名屬于受保護(hù)應(yīng)用程序列表中的應(yīng)用程序,或者屬于客戶端服務(wù)單元12自身所屬的應(yīng)用程序時,可以調(diào)用客戶端服務(wù)單元12的控制邏輯加以處理,然后才通知卸載服務(wù)單元11放行對該應(yīng)用程序的卸載;
[0163]2、客戶端服務(wù)單元12判斷卸載服務(wù)單元11發(fā)送的通知中的包名不屬于自身所在的應(yīng)用程序時,或者進(jìn)一步確定亦不屬于受保護(hù)應(yīng)用程序列表中的應(yīng)用程序時,則直接通知卸載服務(wù)單元11放行對該應(yīng)用程序的卸載。
[0164]在本發(fā)明進(jìn)一步完善的一個實(shí)施例中,所述客戶端服務(wù)單元12收到卸載服務(wù)單元11的通知后,可以向系統(tǒng)界面彈出詢問窗口,通過該窗口詢問客戶是否允許待卸載應(yīng)用程序的卸載,提供類似于“允許”、“拒絕”的選項(xiàng)供用戶選定,以此接收表征用戶允許或不允許卸載該應(yīng)用程序的指令,當(dāng)?shù)皆撝噶詈?,做出兩種相應(yīng)的處理,其一是通知卸載服務(wù)單元11( 一個實(shí)施例中是其監(jiān)控單元110)放行進(jìn)程對待卸載應(yīng)用程序的卸載;其二是通知卸載服務(wù)單元11(其監(jiān)控單元110)向進(jìn)程返回空值以便阻止?13進(jìn)程對待卸載應(yīng)用程序的卸載。
[0165]客戶端服務(wù)單元12的這一處理方法,適宜前置于客戶端服務(wù)單元12對包名的判斷而進(jìn)行,也可以僅僅針對第一種判斷情況,也即包名相同的情況而執(zhí)行本處理方法。具體而言,針對前后兩者,也能夠?qū)е卤景l(fā)明產(chǎn)生更多的如下的變例:
[0166]對于前者,一接收到卸載服務(wù)單元11的通知即彈窗告警,如果用戶允許卸載,貝0先判斷包名是否相同(包括與客戶端服務(wù)單元12自身所在的應(yīng)用程序的包名和/或受保護(hù)應(yīng)用程序列表中的應(yīng)用程序包名比較),如相同,進(jìn)一步調(diào)用客戶端服務(wù)單元12的控制邏輯加以處理,然后才通知卸載服務(wù)單元11放行?13對該應(yīng)用程序的卸載,如果包名不同,則直接通知放行卸載;如果用戶不允許卸載,則通知卸載服務(wù)單元11阻止進(jìn)程對該應(yīng)用程序的卸載。
[0167]對于后者,當(dāng)客戶端服務(wù)單元12接收到卸載服務(wù)單元11的通知,判斷包名相同(同上)后,才彈窗告警,如果用戶允許卸載,則進(jìn)一步調(diào)用客戶端服務(wù)單元12的控制邏輯加以處理,然后才通知卸載服務(wù)單元11放行?13對該應(yīng)用程序的卸載;如果包名不同,則直接通知放行卸載;如果用戶不允許卸載,則通知卸載服務(wù)單元11阻止?13進(jìn)程對該應(yīng)用程序的卸載。
[0168]如前所述,所述客戶端服務(wù)單元12在用戶確定允許目標(biāo)應(yīng)用程序被卸載后,便按照其自身實(shí)現(xiàn)的控制邏輯做后續(xù)處理。這一控制邏輯所實(shí)現(xiàn)的控制內(nèi)容主要包括若干可選的方面的任意一項(xiàng)或任意多項(xiàng)。以下列出這些不同方面并加以闡釋,供本領(lǐng)域技術(shù)人員參昭.
[0169]1、通過一還原模塊25中的一個子模塊,還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指清除由該應(yīng)用程序增添的數(shù)據(jù)。眾所周知的,應(yīng)用程序在正常使用過程中,都會產(chǎn)生一些數(shù)據(jù),主要是以文件的形式保存到相關(guān)目錄中,例如手機(jī)30卡的存儲目錄中。一旦應(yīng)用程序被刪除,往往這些數(shù)據(jù)文件也不再有用,因此,可以被清理。適應(yīng)這一方面,客戶端服務(wù)單元12可以將待卸載應(yīng)用程序所增添的這些文件夾以及相應(yīng)的文件之類的數(shù)據(jù)予以刪除,通過刪除其產(chǎn)生的數(shù)據(jù)而實(shí)現(xiàn)將特定存儲空間的數(shù)據(jù)從占有還原到清零的狀態(tài),由此而實(shí)現(xiàn)數(shù)據(jù)還原。
[0170]2、通過一還原模塊25中的一個子模塊,還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由待卸載應(yīng)用程序修改的數(shù)據(jù)。同理,待卸載應(yīng)用程序,特別是一些安全軟件,或者一些涉及系統(tǒng)配置信息改變的軟件,例如,一種可以通過修改活動管理服務(wù)進(jìn)程0^1:;1^11:7121的861~361^106,^18)的廣播接收器注冊數(shù)據(jù)而控制與這些廣播接收器相關(guān)的應(yīng)用程序的自啟動能力的安全軟件,此類安全軟件對系統(tǒng)的注冊數(shù)據(jù)做出了修改,因此,在其被卸載之前適宜恢復(fù)由其做出過修改的注冊數(shù)據(jù),以免影響被修改了注冊信息的應(yīng)用程序的正常運(yùn)行。因此,本發(fā)明的客戶端服務(wù)單元12可以針對這種情況或者其他類似的情況,而恢復(fù)這些數(shù)據(jù)(例如安全軟件即是客戶端服務(wù)單元12的宿主,該安全軟件修改了所有第三方應(yīng)用程序的廣播接收器注冊信息并且記錄在一列表中,客戶端服務(wù)單元12便可以通過讀取該列表而獲知被修改的注冊數(shù)據(jù),或者不必依賴于列表,而通過掃描所有應(yīng)用程序的八XI?。?!文件的配置信息,據(jù)此而恢復(fù)這些注冊數(shù)據(jù))。
[0171]3、通過一還原模塊25中的一個子模塊,還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由待卸載應(yīng)用程序刪除的數(shù)據(jù)。與前述第2項(xiàng)同理,部分軟件可能出于某種目的而將某些文件刪除,這些刪除的文件同時被備份到臨時目錄。對于這種情況,客戶端服務(wù)單元12便可根據(jù)已知的規(guī)則或者相關(guān)的記錄信息,而將臨時目錄中的相應(yīng)文件恢復(fù)到原位置,而實(shí)現(xiàn)對由待卸載應(yīng)用程序刪除的數(shù)據(jù)的恢復(fù)。
[0172]4、通過一還原模塊25中的一個子模塊,還原由待卸載應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。部分應(yīng)用程序運(yùn)行可能構(gòu)造有多個服務(wù)組件,這些服務(wù)組件在運(yùn)行時分別被綁定到不同的系統(tǒng)服務(wù)進(jìn)程中,以便提供后臺服務(wù),這些服務(wù)的突然中斷可能會影響到某些數(shù)據(jù)的正常傳輸?;蛘吣承┓?wù)進(jìn)程未經(jīng)終止,可能影響到其所屬的應(yīng)用程序的卸載。這些用戶層的服務(wù)進(jìn)程,是注冊到系統(tǒng)服務(wù)進(jìn)程中的,因此,在系統(tǒng)服務(wù)進(jìn)程的管理鏈表中便存在其注冊數(shù)據(jù)。本發(fā)明可以通過停止這些已注冊的用戶層的服務(wù)進(jìn)程,而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)到不存在這些用戶層服務(wù)進(jìn)程的狀態(tài)。
[0173]5、通過一訪問模塊26,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。軟件開發(fā)者往往期望獲知用戶對其應(yīng)用程序的使用感受,特別是卸載其應(yīng)用程序的原因,以便收集用戶對應(yīng)用程序的意見和改進(jìn)建議,以利于對其應(yīng)用程序做出改進(jìn)的決策。有時,在用戶因?yàn)檎`解企圖卸載該應(yīng)用程序時,通過網(wǎng)頁進(jìn)行適當(dāng)?shù)囊龑?dǎo),也有利于降低誤卸載率。因此,可以在所述客戶端服務(wù)單元12接收到卸載服務(wù)單元11的通知后,即通過函數(shù)調(diào)用一個包含了鏈接口此的1社6社,該鏈接指向軟件開發(fā)者的一個預(yù)定網(wǎng)頁,運(yùn)行并訪問該網(wǎng)頁,與用戶做進(jìn)一步的人機(jī)交互。當(dāng)然,這一訪問網(wǎng)頁的手段也可以在客戶端服務(wù)單元12的整個生命周期的任何時間段給出,例如在其執(zhí)行完其它控制邏輯之后給出,具體是在客戶端服務(wù)單元12決定通知卸載待卸載應(yīng)用程序之前給出即可。
[0174]可以看出,以上幾種模塊25、26和子模塊(未圖示)是可以靈活選用的,并且,通常適合應(yīng)用于客戶端服務(wù)單元12由待卸載應(yīng)用程序?qū)崿F(xiàn)的實(shí)例中。但是,當(dāng)客戶端服務(wù)單元12獨(dú)立于應(yīng)用程序時,遵守其與應(yīng)用程序約定的協(xié)議,而在該應(yīng)用程序被卸載之前,由客戶端服務(wù)單元12實(shí)現(xiàn)上述的任意一個模塊或子模塊,顯然也是可行的。
[0175]進(jìn)一步,其中的第1至4個子模塊,因其實(shí)現(xiàn)的功能邏輯相對契合,故可以將這些子模塊構(gòu)造到同一個還原模塊25中。當(dāng)然,所述訪問模塊26則相對具有獨(dú)立性,可以與還原模塊25并發(fā)執(zhí)行或擇一調(diào)用。
[0176]需要進(jìn)一步指出的是,所述客戶端服務(wù)單元12向卸載服務(wù)單元11反饋通知時,可以簡單地只給出兩種形式,即表征允許或拒絕卸載原來待卸載的應(yīng)用程序的兩種不同形式。因此,對于卸載服務(wù)單元11而言,只需依據(jù)客戶端服務(wù)單元12的兩種不同形式而做出不同的處理。在卸載過程,由于被卸載服務(wù)單元11監(jiān)控并截獲,由于需要等候卸載服務(wù)單元11對進(jìn)程資源的釋放,而處于暫停狀態(tài)。卸載服務(wù)單元11獲得客戶端服務(wù)單元12的反饋通知后,依據(jù)表征允許的通知,便可直接將進(jìn)程資源交還給卸載進(jìn)程,放行卸載進(jìn)程對待卸載應(yīng)用程序的卸載操作;依據(jù)表征拒絕的通知,卸載服務(wù)單元11可以將空值作為待給出的自定義數(shù)據(jù)返回給調(diào)用被截獲的函數(shù)如1的匕陰0的上級函數(shù),從而以類似技術(shù)欺騙的手段阻止卸載原來的待卸載應(yīng)用程序,實(shí)現(xiàn)對這一應(yīng)用程序的保護(hù)。
[0177]依據(jù)前述揭示的本發(fā)明的應(yīng)用程序主動防御方法或裝置的精神,可以進(jìn)一步提出諸多應(yīng)用程序?qū)崿F(xiàn)實(shí)例,通過不同的應(yīng)用程序來進(jìn)一步體現(xiàn)和發(fā)揮本發(fā)明的積極效果。例如:
[0178]1、通過構(gòu)造一個安全軟件應(yīng)用程序,當(dāng)該安全軟件應(yīng)用程序運(yùn)行時,即由其注冊卸載服務(wù)進(jìn)程、加載客戶端服務(wù)進(jìn)程,并且主要由卸載服務(wù)進(jìn)程監(jiān)控進(jìn)程的卸載行為,當(dāng)捕獲卸載行為時,即通知客戶端服務(wù)進(jìn)程,客戶端服務(wù)進(jìn)程據(jù)該通知中的包名與自身包名進(jìn)行比較,知悉用戶正企圖卸載安全軟件應(yīng)用程序自身時,即彈窗告警,當(dāng)用戶輸入表征不允許卸載的指令時,即阻止對自身的卸載。當(dāng)用戶輸入表征允許卸載的指令時,即執(zhí)行文件資源清理、注冊數(shù)據(jù)還原、以及停止其他相關(guān)服務(wù)等功能,同時調(diào)用網(wǎng)頁對用戶意見進(jìn)行調(diào)查,然后才通知該卸載服務(wù)進(jìn)程放行的卸載。
[0179]2、同理可以通過在系統(tǒng)中安裝前述的安全軟件來實(shí)現(xiàn)注冊所述的系統(tǒng)卸載服務(wù)進(jìn)程,并且通過該安全軟件來管理與其存在協(xié)議關(guān)系的其他應(yīng)用程序。這些應(yīng)用程序遵守這種協(xié)議,構(gòu)造用于與安全軟件的卸載服務(wù)進(jìn)程通信的客戶端服務(wù)進(jìn)程,以便接收卸載服務(wù)進(jìn)程的通知,而實(shí)現(xiàn)自我保護(hù)。這種情況下,安全軟件可以將這些具有自我保護(hù)功能的應(yīng)用程序包含到一個受保護(hù)應(yīng)用程序列表中,當(dāng)安全軟件的客戶端服務(wù)進(jìn)程判斷包名屬于受保護(hù)應(yīng)用程序時,即轉(zhuǎn)發(fā)給相應(yīng)的受保護(hù)應(yīng)用程序的客戶端服務(wù)進(jìn)程?;蛘撸遁d服務(wù)單元11直接將通知發(fā)送給與自身存在協(xié)議關(guān)系的多個應(yīng)用程序的客戶端服務(wù)進(jìn)程,由各客戶端服務(wù)進(jìn)程判別是否屬于刪除自身所在的應(yīng)用程序,當(dāng)屬于這種情況時,參照前述揭示的方案執(zhí)行后續(xù)處理。當(dāng)卸載服務(wù)進(jìn)程可以以多個客戶端服務(wù)進(jìn)程針對同一待卸載應(yīng)用程序反饋的通知為基礎(chǔ)做出自身的后續(xù)處理,具體而言,當(dāng)多個通知中有一個通知未到達(dá)時,則即使其他通知指示可以放行卸載,但卸載服務(wù)進(jìn)程也不實(shí)際放行進(jìn)程的卸載,而是等待所有通知均告達(dá)時才放行?;蛘?,卸載服務(wù)進(jìn)程可以依據(jù)其中一個表征“暫?!钡耐ㄖ?,而繼續(xù)等待該通知的發(fā)送方的后續(xù)通知,并以該后續(xù)通知為依據(jù)做進(jìn)一步處理。
[0180]通過上述兩個應(yīng)用實(shí)例的闡釋,可以知曉,本發(fā)明的應(yīng)用程序主動防御方法或裝置,可以實(shí)現(xiàn)對整個應(yīng)用程序的卸載過程的全程追蹤,從而可以實(shí)現(xiàn)對這一卸載過程的干預(yù),對該應(yīng)用程序起到保護(hù)、善后等作用。
[0181]為了進(jìn)一步體現(xiàn)本發(fā)明所述的應(yīng)用實(shí)例,以下以前述第2種應(yīng)用實(shí)例為基礎(chǔ),著重于應(yīng)用層面,揭示一種應(yīng)用程序自我保護(hù)方法。
[0182]如前所述,在操作系統(tǒng)中,安裝有如前所述的安全軟件,該安全軟件配置有所述的卸載服務(wù)進(jìn)程,據(jù)以實(shí)現(xiàn)一個如前所述的卸載服務(wù)進(jìn)程。
[0183]參閱圖3,本發(fā)明的應(yīng)用程序自我保護(hù)方法以此為應(yīng)用環(huán)境,包括如下步驟:
[0184]步驟321、建立應(yīng)用程序的客戶端服務(wù)進(jìn)程與系統(tǒng)底層的卸載服務(wù)進(jìn)程的通信。
[0185]按照前一方法的一個實(shí)施例所揭示,本方法的應(yīng)用程序配置有一個用于實(shí)現(xiàn)所述客戶端服務(wù)進(jìn)程的服務(wù)組件,該服務(wù)組件被配置于該應(yīng)用程序的八XI!!!文件中,在應(yīng)用程序安裝時即向系統(tǒng)進(jìn)行注冊,因此可作為用戶層的服務(wù)進(jìn)程運(yùn)行于系統(tǒng)的后臺。
[0186]當(dāng)客戶端服務(wù)進(jìn)程得以運(yùn)行時,便通過化仏義巧丨⑶0函數(shù)將自己與所述安全軟件的卸載服務(wù)進(jìn)程進(jìn)行綁定,建立基于81=(161機(jī)制的通信渠道。據(jù)此,客戶端服務(wù)進(jìn)程便可以接收卸載服務(wù)進(jìn)程發(fā)送的包含待卸載應(yīng)用程序包名的通知,也可以向卸載服務(wù)進(jìn)程發(fā)送表征允許或不允許(拒絕、阻止#13進(jìn)程繼續(xù)執(zhí)行卸載應(yīng)用程序動作的通知。
[0187]步驟322、由所述客戶端服務(wù)進(jìn)程接收所述卸載服務(wù)進(jìn)程的表征卸載該應(yīng)用程序的通知。
[0188]所述卸載服務(wù)進(jìn)程如前所述,直接截獲,或者通過其內(nèi)建的監(jiān)控單元110截獲包管理服務(wù)進(jìn)程$13)對如1的6?狀匕860等函數(shù)的調(diào)用之后,向客戶端服務(wù)進(jìn)程發(fā)送從傳遞給這些函數(shù)的1社6社中(當(dāng)然也可以適應(yīng)具體實(shí)例而利用其它變量形式)獲得的包名的通知,該通知即用于告知客戶端服務(wù)進(jìn)程,指出?13進(jìn)程正試圖卸載某應(yīng)用程序,客戶端服務(wù)進(jìn)程接收并在后續(xù)處理該通知。所述卸載服務(wù)進(jìn)程向客戶端服務(wù)進(jìn)程傳遞包名,可以直接轉(zhuǎn)發(fā)該1社6社給客戶端服務(wù)進(jìn)程,也可以自身提取該1社6社所包含的包名后提供給客戶端服務(wù)進(jìn)程。
[0189]步驟323、由所述客戶端服務(wù)進(jìn)程判斷該通知中包含本應(yīng)用程序包名時,彈窗以問詢用戶意向。
[0190]所述客戶端服務(wù)進(jìn)程接收到該通知后,主要任務(wù)在于獲取其中所包含的待卸載應(yīng)用程序的包名,然后比較該包名是否是自身所在的應(yīng)用程序的包名,當(dāng)該包名屬于自身時,向桌面彈出一詢問窗口,以詢問用戶意向。如前所述,彈窗可以設(shè)定“允許”、“拒絕”之類的二選一的選項(xiàng),并且默認(rèn)一個時間周期,以便在該時間周期內(nèi)未收到用戶選定指令時,視為用戶選定了“拒絕”選區(qū)。
[0191]步驟324、當(dāng)客戶端服務(wù)進(jìn)程非接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程阻止卸載。本步驟進(jìn)一步包括如下子步驟:
[0192]當(dāng)客戶端服務(wù)進(jìn)程彈窗后,等候用戶回復(fù)。當(dāng)用戶選定了“允許”選區(qū)時,客戶端服務(wù)進(jìn)程通過該彈窗接收到這個表征允許本應(yīng)用程序被卸載的指令,否則,當(dāng)用戶選定了 “拒絕”選區(qū),或者當(dāng)用戶在所述時間周期內(nèi)未進(jìn)行任何選定操作時,客戶端服務(wù)進(jìn)程均可以產(chǎn)生表征不允許本應(yīng)用程序被卸載的指令。客戶端服務(wù)進(jìn)程繼而將這些指令以反饋通知的形式通知給所述的卸載服務(wù)進(jìn)程,所述卸載服務(wù)進(jìn)程則因應(yīng)反饋通知所包含的不同表征意義的指令做不同的響應(yīng)處理。
[0193]當(dāng)所述卸載服務(wù)進(jìn)程收到表征不允許(或稱拒絕、阻止)卸載本應(yīng)用程序的指令的相關(guān)反饋通知時,如前所述,可以向進(jìn)程返回空值,從而終止進(jìn)程對本應(yīng)用程序的卸載操作,有效地保護(hù)了本程序免于被卸載。
[0194]當(dāng)所述卸載服務(wù)進(jìn)程收到表征允許卸載本應(yīng)用程序的指令的相關(guān)反饋通知時,如前所述,可以繼續(xù)進(jìn)程的正常執(zhí)行,以允許卸載服務(wù)進(jìn)程放行進(jìn)程對本應(yīng)用程序的卸載操作。
[0195]因此,上述的實(shí)例出于安全考慮,僅當(dāng)接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程放行卸載。而將用戶未對彈窗進(jìn)行選定以及客戶在彈窗中選定了“拒絕”選區(qū),視為客戶端服務(wù)進(jìn)程非接收到表征允許卸載的指令,從而一律通知卸載服務(wù)進(jìn)程阻止進(jìn)程對本應(yīng)用程序的卸載。
[0196]參閱前述的方法,作為進(jìn)一步的實(shí)施例,本方法在允許本應(yīng)用程序被卸載時,先于通知所述卸載服務(wù)進(jìn)程放行卸載而可以通過一還原模塊25和/或訪問模塊26實(shí)現(xiàn)卸載前的控制邏輯。
[0197]這一控制邏輯所實(shí)現(xiàn)的控制內(nèi)容主要包括若干可選的方面的任意一項(xiàng)或任意多項(xiàng)。以下列出這些不同方面并加以闡釋,供本領(lǐng)域技術(shù)人員參照:
[0198]1、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指清除由本應(yīng)用程序增添的數(shù)據(jù)。眾所周知的,應(yīng)用程序在正常使用過程中,都會產(chǎn)生一些數(shù)據(jù),主要是以文件的形式保存到相關(guān)目錄中,例如手機(jī)30卡的存儲目錄中。一旦應(yīng)用程序被刪除,往往這些數(shù)據(jù)文件也不再有用,因此,可以被清理。適應(yīng)這一方面,客戶端服務(wù)進(jìn)程可以將待卸載應(yīng)用程序所增添的這些文件夾以及相應(yīng)的文件之類的數(shù)據(jù)予以刪除,通過刪除其產(chǎn)生的數(shù)據(jù)而實(shí)現(xiàn)將特定存儲空間的數(shù)據(jù)從占有還原到清零的狀態(tài),由此而實(shí)現(xiàn)數(shù)據(jù)還原。
[0199]2、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由本應(yīng)用程序修改的數(shù)據(jù)。同理,本應(yīng)用程序,例如,是一種可以通過修改活動管理服務(wù)進(jìn)程0^1:1^11:7此的861~361^106,^18)的廣播接收器注冊數(shù)據(jù)而控制與這些廣播接收器相關(guān)的應(yīng)用程序的自啟動能力的安全軟件,本應(yīng)用程序基于安全考慮對系統(tǒng)的注冊數(shù)據(jù)做出了修改,因此,在其被卸載之前適宜恢復(fù)由其做出過修改的注冊數(shù)據(jù),以免影響被修改了注冊信息的應(yīng)用程序的正常運(yùn)行。因此,本發(fā)明的客戶端服務(wù)進(jìn)程可以針對這種情況或者其他類似的情況,而恢復(fù)這些數(shù)據(jù)(例如本應(yīng)用程序修改了所有第三方應(yīng)用程序的廣播接收器注冊信息并且記錄在一列表中,客戶端服務(wù)進(jìn)程便可以通過讀取該列表而獲知被修改的注冊數(shù)據(jù),或者不必依賴于列表,而通過掃描所有應(yīng)用程序的八
XII?。∥募呐渲眯畔?,據(jù)此而恢復(fù)這些注冊數(shù)據(jù))。
[0200]3、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由本應(yīng)用程序刪除的數(shù)據(jù)。與前述第2項(xiàng)同理,本應(yīng)用程序可能出于某種目的而將某些文件刪除,這些刪除的文件同時被備份到臨時目錄。對于這種情況,客戶端服務(wù)進(jìn)程便可根據(jù)已知的規(guī)則或者相關(guān)的記錄信息,而將臨時目錄中的相應(yīng)文件恢復(fù)到原位置,而實(shí)現(xiàn)對由本應(yīng)用程序刪除的數(shù)據(jù)的恢復(fù)。
[0201]4、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是通過停止由本應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。本應(yīng)用程序運(yùn)行可能構(gòu)造有多個服務(wù)組件,這些服務(wù)組件在運(yùn)行時分別被綁定到相應(yīng)的系統(tǒng)服務(wù)進(jìn)程中,以便提供后臺服務(wù),這些服務(wù)的突然中斷可能會影響到某些數(shù)據(jù)的正常傳輸?;蛘吣承┓?wù)進(jìn)程未經(jīng)終止,可能影響到其本應(yīng)用程序的卸載。這些用戶層的服務(wù)進(jìn)程,是注冊到系統(tǒng)服務(wù)進(jìn)程中的,因此,在系統(tǒng)服務(wù)進(jìn)程的管理鏈表中便存在其注冊數(shù)據(jù)。本發(fā)明可以通過停止這些已注冊的用戶層的服務(wù)進(jìn)程,而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)到不存在這些用戶層服務(wù)進(jìn)程的狀態(tài)。
[0202]5、通過訪問模塊26,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。軟件開發(fā)者往往期望獲知用戶對其應(yīng)用程序的使用感受,特別是卸載其應(yīng)用程序的原因,以便收集用戶對應(yīng)用程序的意見和改進(jìn)建議,以利于對其應(yīng)用程序做出改進(jìn)的決策。有時,在用戶因?yàn)檎`解企圖卸載該應(yīng)用程序時,通過網(wǎng)頁進(jìn)行適當(dāng)?shù)囊龑?dǎo),也有利于降低誤卸載率。因此,可以在所述客戶端服務(wù)進(jìn)程接收到卸載服務(wù)進(jìn)程的通知后,即通過8仏I'認(rèn)函數(shù)調(diào)用一個包含了鏈接口此的1社6社,該鏈接指向軟件開發(fā)者的一個預(yù)定網(wǎng)頁,運(yùn)行并訪問該網(wǎng)頁,與用戶做進(jìn)一步的人機(jī)交互。當(dāng)然,這一訪問網(wǎng)頁的手段也可以在客戶端服務(wù)進(jìn)程的整個生命周期的任何時間段給出,例如在其執(zhí)行完其它控制邏輯之后給出,具體是在客戶端服務(wù)進(jìn)程決定通知卸載本應(yīng)用程序之前給出即可。
[0203]可以看出,以上幾種模塊和子模塊是可以靈活選用的,并且,通常適合應(yīng)用于客戶端服務(wù)進(jìn)程由本應(yīng)用程序?qū)崿F(xiàn)的實(shí)例中。
[0204]進(jìn)一步,其中的第1至4個子模塊,因其實(shí)現(xiàn)的功能邏輯相對契合,故可以將這些子模塊構(gòu)造到同一個還原模塊25中。當(dāng)然,所述訪問模塊26則相對具有獨(dú)立性,可以與還原模塊25并發(fā)執(zhí)行或擇一調(diào)用。
[0205]同理,參閱圖4,依據(jù)計算機(jī)程序的功能模塊化設(shè)計邏輯,進(jìn)一步揭示一種應(yīng)用程序自我保護(hù)裝置的實(shí)例,該裝置主要通過實(shí)例化前述方法中的客戶端服務(wù)進(jìn)程而構(gòu)造一個客戶端服務(wù)單元12。所述客戶端服務(wù)單元12包括通信模塊21、接收模塊22、交互模塊23、響應(yīng)模塊24,以及在包括在部分變化實(shí)施例中的還原模塊25、訪問模塊26。以下對各個具體模塊所實(shí)現(xiàn)的功能做進(jìn)一步的闡述。
[0206]所述的通信模塊21,用于建立本客戶端服務(wù)單元12與系統(tǒng)底層的卸載服務(wù)單元11的通信。
[0207]本應(yīng)用程序配置有一個用于構(gòu)造所述客戶端服務(wù)單元12的服務(wù)組件,該服務(wù)組件被配置于該應(yīng)用程序的八XI!??!文件中,在應(yīng)用程序安裝時即向系統(tǒng)進(jìn)行注冊,因此可作為用戶層的服務(wù)進(jìn)程運(yùn)行于系統(tǒng)的后臺。
[0208]當(dāng)客戶端服務(wù)單元12得以運(yùn)行時,便通過通信模塊21調(diào)用⑶0函數(shù)將客戶端服務(wù)單元12與所述安全軟件的卸載服務(wù)單元11進(jìn)行綁定,建立基于機(jī)制的通信渠道。據(jù)此,客戶端服務(wù)單元12便可以接收卸載服務(wù)單元11發(fā)送的包含待卸載應(yīng)用程序包名的通知,也可以向卸載服務(wù)單元11發(fā)送表征允許或不允許(拒絕、阻止)?18進(jìn)程繼續(xù)執(zhí)行卸載應(yīng)用程序動作的通知。
[0209]所述的接收模塊22,用于接收所述卸載服務(wù)單元11的表征卸載該應(yīng)用程序的通知。
[0210]所述卸載服務(wù)單元11如前所述,直接截獲,或者通過其內(nèi)建的監(jiān)控單元110截獲包管理服務(wù)進(jìn)程$13)對如1的6?狀匕860等函數(shù)的調(diào)用之后,向客戶端服務(wù)單元12發(fā)送從傳遞給這些函數(shù)的1社6社中(當(dāng)然也可以適應(yīng)具體實(shí)例而利用其它變量形式)獲得的包名的通知,該通知即用于告知客戶端服務(wù)單元12,指出進(jìn)程正試圖卸載某應(yīng)用程序,客戶端服務(wù)單元12通過接收模塊22接收以便在后續(xù)處理該通知。所述卸載服務(wù)單元11向客戶端服務(wù)單元12傳遞包名,可以直接轉(zhuǎn)發(fā)該1時6社給客戶端服務(wù)單元12的接收模塊22,也可以自身提取該1社6社所包含的包名后提供給客戶端服務(wù)單元12的接收模塊22。
[0211]所述的交互模塊23,用于判斷該通知中包含本應(yīng)用程序包名時,彈窗以問詢用戶意向。
[0212]所述客戶端服務(wù)單元12的接收模塊22接收到該通知后,交由交互模塊23獲取其中所包含的待卸載應(yīng)用程序的包名,然后比較該包名是否是本應(yīng)用程序自身所在的應(yīng)用程序的包名,當(dāng)該包名屬于本應(yīng)用程序自身的包名時,向桌面彈出一詢問窗口,以詢問用戶意向。如前所述,彈窗可以設(shè)定“允許”、“拒絕”之類的二選一的選項(xiàng),并且默認(rèn)一個時間周期,以便在該時間周期內(nèi)未收到用戶選定指令時,視為用戶選定了“拒絕”選區(qū)。
[0213]所述的響應(yīng)模塊24,被配置為當(dāng)客戶端服務(wù)單元12非接收到表征允許卸載的指令時,通知卸載服務(wù)單元11阻止卸載。
[0214]具體而言,所述的客戶端服務(wù)單元12中,當(dāng)交互模塊23彈窗后,等候用戶回復(fù)。當(dāng)用戶選定了“允許”選區(qū)時,客戶端服務(wù)單元12的響應(yīng)模塊24通過該彈窗接收到這個表征允許本應(yīng)用程序被卸載的指令,否則,當(dāng)用戶選定了“拒絕”選區(qū),或者當(dāng)用戶在所述時間周期內(nèi)未進(jìn)行任何選定操作時,客戶端服務(wù)單元12的響應(yīng)模塊24均可以產(chǎn)生表征不允許本應(yīng)用程序被卸載的指令。響應(yīng)模塊24繼而將這些指令以反饋通知的形式通知給所述的卸載服務(wù)單元11,所述卸載服務(wù)單元11則因應(yīng)反饋通知所包含的不同表征意義的指令做不同的響應(yīng)處理。
[0215]當(dāng)所述卸載服務(wù)單元11收到表征不允許(或稱拒絕、阻止)卸載本應(yīng)用程序的指令的相關(guān)反饋通知時,如前所述,可以向進(jìn)程返回空值,從而終止進(jìn)程對本應(yīng)用程序的卸載操作,有效地保護(hù)了本程序免于被卸載。
[0216]當(dāng)所述卸載服務(wù)單元11收到表征允許卸載本應(yīng)用程序的指令的相關(guān)反饋通知時,如前所述,可以繼續(xù)?13進(jìn)程的正常執(zhí)行,以允許卸載服務(wù)單元11放行?13進(jìn)程對本應(yīng)用程序的卸載操作。
[0217]因此,上述的實(shí)例出于安全考慮,所述響應(yīng)模塊24,僅當(dāng)接收到表征允許卸載的指令時,通知卸載服務(wù)單元11放行卸載。而將用戶未對彈窗進(jìn)行選定以及客戶在彈窗中選定了“拒絕”選區(qū),視為響應(yīng)模塊24非接收到表征允許卸載的指令,從而一律通知卸載服務(wù)單元11阻止進(jìn)程對本應(yīng)用程序的卸載。
[0218]作為進(jìn)一步的實(shí)施例,本裝置的客戶端服務(wù)單元12在允許本應(yīng)用程序被卸載時,先于通知所述卸載服務(wù)單元11放行卸載而可以通過一還原模塊25和丨或訪問模塊26實(shí)現(xiàn)卸載前的控制邏輯。
[0219]這一控制邏輯所實(shí)現(xiàn)的控制內(nèi)容主要包括若干可選的方面的任意一項(xiàng)或任意多項(xiàng)。以下列出這些不同方面并加以闡釋,供本領(lǐng)域技術(shù)人員參照:
[0220]1、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指清除由本應(yīng)用程序增添的數(shù)據(jù)。眾所周知的,應(yīng)用程序在正常使用過程中,都會產(chǎn)生一些數(shù)據(jù),主要是以文件的形式保存到相關(guān)目錄中,例如手機(jī)30卡的存儲目錄中。一旦應(yīng)用程序被刪除,往往這些數(shù)據(jù)文件也不再有用,因此,可以被清理。適應(yīng)這一方面,客戶端服務(wù)單元12可以將待卸載應(yīng)用程序所增添的這些文件夾以及相應(yīng)的文件之類的數(shù)據(jù)予以刪除,通過刪除其產(chǎn)生的數(shù)據(jù)而實(shí)現(xiàn)將特定存儲空間的數(shù)據(jù)從占有還原到清零的狀態(tài),由此而實(shí)現(xiàn)數(shù)據(jù)還原。
[0221]2、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由本應(yīng)用程序修改的數(shù)據(jù)。同理,本應(yīng)用程序,例如,是一種可以通過修改活動管理服務(wù)進(jìn)程0^1:1^11:7此的861~361^106,^18)的廣播接收器注冊數(shù)據(jù)而控制與這些廣播接收器相關(guān)的應(yīng)用程序的自啟動能力的安全軟件,本應(yīng)用程序基于安全考慮對系統(tǒng)的注冊數(shù)據(jù)做出了修改,因此,在其被卸載之前適宜恢復(fù)由其做出過修改的注冊數(shù)據(jù),以免影響被修改了注冊信息的應(yīng)用程序的正常運(yùn)行。因此,本發(fā)明的客戶端服務(wù)單元12可以針對這種情況或者其他類似的情況,而恢復(fù)這些數(shù)據(jù)(例如本應(yīng)用程序修改了所有第三方應(yīng)用程序的廣播接收器注冊信息并且記錄在一列表中,客戶端服務(wù)單元12便可以通過讀取該列表而獲知被修改的注冊數(shù)據(jù),或者不必依賴于列表,而通過掃描所有應(yīng)用程序的^11(11-01(11118111^681:.XI?。?!文件的配置信息,據(jù)此而恢復(fù)這些注冊數(shù)據(jù))。
[0222]3、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是指恢復(fù)由本應(yīng)用程序刪除的數(shù)據(jù)。與前述第2項(xiàng)同理,本應(yīng)用程序可能出于某種目的而將某些文件刪除,這些刪除的文件同時被備份到臨時目錄。對于這種情況,客戶端服務(wù)單元12便可根據(jù)已知的規(guī)則或者相關(guān)的記錄信息,而將臨時目錄中的相應(yīng)文件恢復(fù)到原位置,而實(shí)現(xiàn)對由本應(yīng)用程序刪除的數(shù)據(jù)的恢復(fù)。
[0223]4、通過還原模塊25中的一個子模塊,還原由本應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù),主要是通過停止由本應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。本應(yīng)用程序運(yùn)行可能構(gòu)造有多個服務(wù)組件,這些服務(wù)組件在運(yùn)行時分別被綁定到相應(yīng)的系統(tǒng)服務(wù)進(jìn)程中,以便提供后臺服務(wù),這些服務(wù)的突然中斷可能會影響到某些數(shù)據(jù)的正常傳輸?;蛘吣承┓?wù)進(jìn)程未經(jīng)終止,可能影響到其本應(yīng)用程序的卸載。這些用戶層的服務(wù)進(jìn)程,是注冊到系統(tǒng)服務(wù)進(jìn)程中的,因此,在系統(tǒng)服務(wù)進(jìn)程的管理鏈表中便存在其注冊數(shù)據(jù)。本發(fā)明可以通過停止這些已注冊的用戶層的服務(wù)進(jìn)程,而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)到不存在這些用戶層服務(wù)進(jìn)程的狀態(tài)。
[0224]5、通過訪問模塊26,調(diào)用瀏覽器訪問預(yù)設(shè)鏈接的網(wǎng)頁。軟件開發(fā)者往往期望獲知用戶對其應(yīng)用程序的使用感受,特別是卸載其應(yīng)用程序的原因,以便收集用戶對應(yīng)用程序的意見和改進(jìn)建議,以利于對其應(yīng)用程序做出改進(jìn)的決策。有時,在用戶因?yàn)檎`解企圖卸載該應(yīng)用程序時,通過網(wǎng)頁進(jìn)行適當(dāng)?shù)囊龑?dǎo),也有利于降低誤卸載率。因此,可以在所述客戶端服務(wù)單元12接收到卸載服務(wù)單元11的通知后,即通過函數(shù)調(diào)用一個包含了鏈接口此的1社6社,該鏈接指向軟件開發(fā)者的一個預(yù)定網(wǎng)頁,運(yùn)行并訪問該網(wǎng)頁,與用戶做進(jìn)一步的人機(jī)交互。當(dāng)然,這一訪問網(wǎng)頁的手段也可以在客戶端服務(wù)單元12的整個生命周期的任何時間段給出,例如在其執(zhí)行完其它控制邏輯之后給出,具體是在客戶端服務(wù)單元12決定通知卸載本應(yīng)用程序之前給出即可。
[0225]可以看出,以上幾種模塊和子模塊是可以靈活選用的,并且,通常適合應(yīng)用于客戶端服務(wù)單元12由本應(yīng)用程序?qū)崿F(xiàn)的實(shí)例中。
[0226]進(jìn)一步,其中的第1至4個子模塊,因其實(shí)現(xiàn)的功能邏輯相對契合,故可以將這些子模塊構(gòu)造到同一個還原模塊25中。當(dāng)然,所述訪問模塊26則相對具有獨(dú)立性,可以與還原模塊25并發(fā)執(zhí)行或擇一調(diào)用。
[0227]結(jié)合前述實(shí)現(xiàn)自我保護(hù)應(yīng)用程序的卸載過程的方案,可以看出,本發(fā)明的整體構(gòu)思也適用于單個的應(yīng)用程序。這種自我保護(hù)的方案,適合結(jié)合到沙箱應(yīng)用程序加固技術(shù)中實(shí)現(xiàn),然后通過加固后的應(yīng)用程序與實(shí)現(xiàn)了沙箱技術(shù)的安全軟件互相配合,更有利于鞏固對應(yīng)用程序的保護(hù),避免應(yīng)用程序被誤卸載或者被惡意卸載。
[0228]由于本發(fā)明的實(shí)施,無論是將本發(fā)明的整體構(gòu)思實(shí)現(xiàn)于諸如“360手機(jī)衛(wèi)士”之類的專門的安全軟件,還是將其實(shí)現(xiàn)為與“360手機(jī)衛(wèi)士”相配合的加固應(yīng)用程序,均可以實(shí)現(xiàn)對應(yīng)用程序的保護(hù)功能,即使應(yīng)用程序被善意卸載,也能進(jìn)一步通過清理無效資源、還原相關(guān)數(shù)據(jù)等來實(shí)現(xiàn)更為高效的系統(tǒng)資源配置。
[0229]綜上所述,本發(fā)明能夠?qū)崿F(xiàn)對操作系統(tǒng)卸載應(yīng)用程序過程的監(jiān)聽,能夠前置于該應(yīng)用程序被卸載而進(jìn)行相關(guān)的預(yù)前處理,本質(zhì)上是實(shí)現(xiàn)了安全技術(shù)中的主動防御功能,可以更有效地保護(hù)應(yīng)用程序的安全。
[0230]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種應(yīng)用程序主動防御方法,其特征在于,包括以下步驟: 由注冊到系統(tǒng)底層的卸載服務(wù)進(jìn)程截獲卸載該應(yīng)用程序的行為; 由卸載服務(wù)進(jìn)程將該行為通知與其通信的客戶端服務(wù)進(jìn)程; 由客戶端服務(wù)進(jìn)程還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)進(jìn)程放行所述卸載應(yīng)用程序的行為。
2.根據(jù)權(quán)利要求1所述的應(yīng)用程序主動防御方法,其特征在于,所述卸載服務(wù)進(jìn)程通過鉤子函數(shù)掛鉤包管理服務(wù)進(jìn)程的與卸載應(yīng)用程序相關(guān)的函數(shù)的運(yùn)行入口點(diǎn)而截獲所述卸載應(yīng)用程序的行為,并通過向該相關(guān)函數(shù)的調(diào)用者返回自定義數(shù)據(jù)而恢復(fù)所述包管理服務(wù)進(jìn)程的運(yùn)行。
3.根據(jù)權(quán)利要求2所述的應(yīng)用程序主動防御方法,其特征在于,該鉤子函數(shù)具體通過監(jiān)控包管理服務(wù)進(jìn)程調(diào)用如16仏?^6()函數(shù)而截獲所述的行為。
4.根據(jù)權(quán)利要求1所述的應(yīng)用程序主動防御方法,其特征在于,當(dāng)且僅當(dāng)所述客戶端服務(wù)進(jìn)程從其接收到的通知中判斷出待卸載的應(yīng)用程序?yàn)樵摽蛻舳朔?wù)進(jìn)程所屬的應(yīng)用程序時,才執(zhí)行所述還原數(shù)據(jù)并通知卸載服務(wù)進(jìn)程放行卸載的步驟,否則通知所述卸載服務(wù)進(jìn)程直接放行卸載所述應(yīng)用程序。
5.根據(jù)權(quán)利要求4所述的應(yīng)用程序主動防御方法,其特征在于,通過比較所述通知中所包含的包名與所述客戶端服務(wù)進(jìn)程所屬應(yīng)用程序的包名是否相同,而確定待卸載應(yīng)用程序是否為該客戶端服務(wù)進(jìn)程所屬的應(yīng)用程序。
6.根據(jù)權(quán)利要求1所述的應(yīng)用程序主動防御方法,其特征在于,所述客戶端服務(wù)進(jìn)程收到卸載服務(wù)進(jìn)程的通知后,彈出詢問窗口,當(dāng)且僅當(dāng)接收到通過該窗口輸入的表征允許卸載所述應(yīng)用程序的指令時,才執(zhí)行所述還原數(shù)據(jù)并通知卸載服務(wù)進(jìn)程放行的步驟;否則通知所述卸載服務(wù)進(jìn)程阻止卸載所述應(yīng)用程序。
7.根據(jù)權(quán)利要求1所述的應(yīng)用程序主動防御方法,其特征在于,所述還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)的過程,包括執(zhí)行如下操作中的一種或任意多種: 清除由該應(yīng)用程序增添的數(shù)據(jù); 恢復(fù)由該應(yīng)用程序修改的數(shù)據(jù); 恢復(fù)由該應(yīng)用程序刪除的數(shù)據(jù); 通過停止由該應(yīng)用程序注冊的服務(wù)進(jìn)程而恢復(fù)系統(tǒng)的服務(wù)進(jìn)程注冊數(shù)據(jù)。
8.一種應(yīng)用程序主動防御裝置,其特征在于,包括: 卸載服務(wù)單元,預(yù)注冊到系統(tǒng)底層,用于截獲卸載該應(yīng)用程序的行為,且將該行為通知與其通信的客戶端服務(wù)進(jìn)程; 客戶端服務(wù)單元,用于還原由該應(yīng)用程序處理的至少部分?jǐn)?shù)據(jù)后,通知該卸載服務(wù)進(jìn)程放行所述卸載應(yīng)用程序的行為。
9.一種應(yīng)用程序自我保護(hù)方法,其特征在于,包括如下步驟: 建立應(yīng)用程序的客戶端服務(wù)進(jìn)程與系統(tǒng)底層的卸載服務(wù)進(jìn)程的通信; 由所述客戶端服務(wù)進(jìn)程執(zhí)行如下過程: 接收所述卸載服務(wù)進(jìn)程的表征卸載該應(yīng)用程序的通知; 判斷該通知中包含本應(yīng)用程序包名時,彈窗以問詢用戶意向; 當(dāng)非接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程阻止卸載。
10.一種應(yīng)用程序自我保護(hù)裝置,其特征在于,包括客戶端服務(wù)單元,該單元進(jìn)一步包括: 通信模塊,用于建立客戶端服務(wù)單元與系統(tǒng)底層的卸載服務(wù)單元的通信; 接收模塊,用于接收所述卸載服務(wù)進(jìn)程的表征卸載該應(yīng)用程序的通知; 交互模塊,用于判斷該通知中包含本應(yīng)用程序包名時,彈窗以問詢用戶意向; 響應(yīng)模塊,被配置為當(dāng)非接收到表征允許卸載的指令時,通知卸載服務(wù)進(jìn)程阻止卸載。
【文檔編號】G06F21/54GK104376257SQ201410773081
【公開日】2015年2月25日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】楊威, 曹陽, 竇文科, 符傳堅 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司