亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種卸載軟件的處理方法、裝置及電子設(shè)備與流程

文檔序號:11951557閱讀:387來源:國知局
一種卸載軟件的處理方法、裝置及電子設(shè)備與流程

本發(fā)明涉及系統(tǒng)安全技術(shù)領(lǐng)域,尤其涉及一種卸載軟件的處理方法、裝置及電子設(shè)備。



背景技術(shù):

隨著互聯(lián)網(wǎng)技術(shù)發(fā)展,病毒,木馬等惡意程序技術(shù)層出不窮,個別惡意程序利用特殊手段調(diào)起安全軟件的卸載程序進行卸載。若安全軟件被卸載,則用戶的設(shè)備沒有了安全軟件的保護,處于極度危險之中。

現(xiàn)有技術(shù)是通過修改毒霸的卸載程序(uniOnst.exe),判斷調(diào)起的父進程是否為無卸載權(quán)限的軟件,若是直接退出卸載程序,以此來達到反卸載的功能。

現(xiàn)有技術(shù)中用戶的卸載是允許的,用戶的卸載時,父進程是桌面進程程序explorer.exe,現(xiàn)有技術(shù)方案是對這個進程名是允許的。

那么,現(xiàn)有技術(shù)中就會存在不足之處,一旦無卸載權(quán)限的軟件把自身模塊注入到explorer進程中再進行卸載的話,現(xiàn)有技術(shù)方案由于對于父進程是桌面進程程序explorer.exe是允許卸載的,因此,在這種情況下無卸載權(quán)限的軟件就會被允許卸載,對無卸載權(quán)限的軟件的攔截就失敗了。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例提出了一種卸載軟件的處理方法、裝置及電子設(shè)備,可以解決如何增強對惡意卸載軟件的攔截的問題。

在第一方面,本發(fā)明實施例提供了一種惡意卸載軟件的處理方法,包括:

獲取卸載操作的調(diào)用棧中的函數(shù)地址列表;

查詢所述函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱;

判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,當包括所述預(yù)設(shè)字符串時,禁止卸載軟件;當不包括所述預(yù)設(shè)字符串時,允許卸載軟件。

進一步地,所述允許卸載軟件具體為:在鉤子函數(shù)NewNtCreateSection里,調(diào)用NtCreateSection原始函數(shù);所述禁止卸載軟件具體為:在鉤子函數(shù)NewNtCreateSection里,禁止調(diào)用NtCreateSection原始函數(shù),返回拒絕訪問狀態(tài)并退出函數(shù)。

進一步地,所述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表具體為:調(diào)用內(nèi)核函數(shù)RtlWalkFrameChain獲取卸載操作的調(diào)用棧中的函數(shù)地址列表。

進一步地,所述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表之前,還判斷在NewNtCreateSection函數(shù)中,參數(shù)AllocationAttributes是否為SEC_IMAGE,若是,進行后續(xù)操作,否則結(jié)束操作。

進一步地,所述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表之前,還判斷正在打開的文件路徑中是否包含uniOnst.exe,若是,進行后續(xù)操作,否則結(jié)束操作。

進一步地,所述確定所述正在打開的文件路徑具體為:在NewNtCreateSection函數(shù)中,調(diào)用內(nèi)核函數(shù)ObReferenceObjectByHandle獲取文件對象指針,獲取所述指針結(jié)構(gòu)里保存的正在打開的文件路徑。

在第二方面,本發(fā)明實施例提供了一種卸載軟件的處理裝置,包括:

用于獲取卸載操作的調(diào)用棧中的函數(shù)地址列表的模塊;

用于查詢所述函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱的模塊;

用于判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,當包括所述預(yù)設(shè)字符串時禁止卸載軟件,當不包括所述預(yù)設(shè)字符串時允許卸載軟件的模塊。

進一步地,所述允許卸載軟件具體為:在鉤子函數(shù)NewNtCreateSection里,調(diào)用NtCreateSection原始函數(shù);所述禁止卸載軟件具體為:在鉤子函數(shù)NewNtCreateSection里,禁止調(diào)用NtCreateSection原始函數(shù),返回拒絕訪問狀態(tài)并退出函數(shù)。

進一步地,所述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表具體為:調(diào)用內(nèi)核函數(shù)RtlWalkFrameChain獲取卸載操作的調(diào)用棧中的函數(shù)地址列表。

進一步地,該裝置還包括:

用于在所述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表之前,判斷在NewNtCreateSection函數(shù)中,參數(shù)AllocationAttributes是否為SEC_IMAGE,若是,進行后續(xù)操作,否則結(jié)束操作的模塊。

進一步地,該裝置還包括:

用于在所述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表之前,判斷正在打開的文件路徑中是否包含uniOnst.exe,若是,進行后續(xù)操作,否則結(jié)束操作的模塊。

進一步地,確定所述正在打開的文件路徑具體為:在NewNtCreateSection函數(shù)中,調(diào)用內(nèi)核函數(shù)ObReferenceObjectByHandle獲取文件對象指針,獲取所述指針結(jié)構(gòu)里保存的正在打開的文件路徑。

在第三方面,本發(fā)明實施例提供了一種電子設(shè)備,包括:殼體、處理器、存儲器、電路板和電源電路,其中,電路板安置在殼體圍成的空間內(nèi)部,處理器和存儲器設(shè)置在電路板上;電源電路,用于為上述電子設(shè)備的各個電路或器件供電;存儲器用于存儲可執(zhí)行程序代碼;處理器通過讀取存儲器中存儲的可執(zhí)行程序代碼來運行與可執(zhí)行程序代碼對應(yīng)的程序,用于執(zhí)行如下操作:

獲取卸載操作的調(diào)用棧中的函數(shù)地址列表;

查詢所述函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱;

判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,當包括所述預(yù)設(shè)字符串時,禁止卸載軟件;當不包括所述預(yù)設(shè)字符串時,允許卸載軟件。

在第四方面,本發(fā)明實施例提供了一種存儲介質(zhì),其中,該存儲介質(zhì)用于存儲應(yīng)用程序,所述應(yīng)用程序用于在運行時執(zhí)行本發(fā)明實施例所述的一種卸載軟件的處理方法。

在第五方面,本發(fā)明實施例提供了一種應(yīng)用程序,其中,該應(yīng)用程序用于在運行時執(zhí)行本發(fā)明實施例所述的一種卸載軟件的處理方法。

有益效果如下:

由于本發(fā)明實施例中獲取了卸載操作的調(diào)用棧中的函數(shù)地址列表,查詢所述函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱,判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,當包括所述預(yù)設(shè)字符串時,禁止卸載軟件;當不包括所述預(yù)設(shè)字符串時,允許卸載軟件。可以看出,本發(fā)明實施例是通過棧回溯技術(shù),無需判斷父進程,?;厮菡页稣{(diào)用模塊名稱,再確定是否要攔截惡意卸載安全軟件。從而避免了無卸載權(quán)限的軟件把自身模塊注入到explorer進程中再進行卸載時能夠成功卸載的情況。通過對調(diào)用棧中信息的梳理,能夠?qū)π遁d操作的全過程進行監(jiān)督,增強了對惡意卸載軟件的攔截。

附圖說明

下面將參照附圖描述本發(fā)明的具體實施例,其中:

圖1示出了本發(fā)明實施例中卸載軟件的處理方法的流程示意圖;

圖2示出了本發(fā)明一個實例中卸載軟件的處理方法的具體實現(xiàn)流程示意圖;

圖3示出了本發(fā)明實施例中電子設(shè)備的結(jié)構(gòu)示意圖。

具體實施方式

為了使本發(fā)明的技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本發(fā)明的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本發(fā)明的一部分實施例,而不是所有實施例的窮舉。并且在不沖突的情況下,本說明中的實施例及實施例中的特征可以互相結(jié)合。

本發(fā)明實施例提出了一種卸載軟件的處理方法、裝置及電子設(shè)備,下面進行說明。

圖1示出了本發(fā)明實施例中卸載軟件的處理方法,包括:

步驟101,獲取卸載操作的調(diào)用棧中的函數(shù)地址列表;

步驟102,查詢函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱;

步驟103,判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,若是,即當包括所述預(yù)設(shè)字符串時,進行步驟104;否則,即當不包括所述預(yù)設(shè)字符串時,進行步驟105;

具體地,該預(yù)設(shè)字符串可以根據(jù)經(jīng)驗設(shè)置,其中可包括被確認對安全軟件具有惡意的程序的相關(guān)信息,具體來說,可以包括競品軟件的相關(guān)信息。

步驟104,禁止卸載軟件;

步驟105,允許卸載軟件。

為了便于本發(fā)明的實施,下面以安全軟件毒霸作為實例進行說明。

本實例是應(yīng)用于PC個人電腦終端上的,運行于內(nèi)核層驅(qū)動程序上,即是毒霸的驅(qū)動程序上。毒霸現(xiàn)有方案中有一個掛鉤NtCreateSection的函數(shù),NtCreateSection函數(shù)的作用就是打開映射文件前的一個創(chuàng)建會話函數(shù),創(chuàng)建會話失敗就會打開文件失敗,所以可以在這函數(shù)實現(xiàn)一些打開文件的攔截功能。

現(xiàn)有方案掛鉤這函數(shù),鉤子函數(shù)是NewNtCreateSection,本實例就是在NewNtCreateSection鉤子函數(shù)上實現(xiàn)?;厮莶r截惡意卸載毒霸。本實例中卸載軟件的處理方法如圖2所示,包括:

步驟201,判斷在NewNtCreateSection函數(shù)中,參數(shù)AllocationAttributes是否為SEC_IMAGE,若是,進行步驟202,否則結(jié)束。

在NewNtCreateSection函數(shù)中,參數(shù)AllocationAttributes是保存配置屬性信息的,如果此函數(shù)是SEC_IMAGE,意為可執(zhí)行文件映射,才有進一步處理的必要,可進行后續(xù)操作。

步驟202,判斷正在打開的文件路徑中是否包含uniOnst.exe,若是,進行步驟203,否則結(jié)束。

上述正在打開的文件路徑具體可以為:在NewNtCreateSection函數(shù)中,調(diào)用內(nèi)核函數(shù)ObReferenceObjectByHandle獲取文件對象指針,獲取所述指針結(jié)構(gòu)里保存的正在打開的文件路徑。

uniOnst.exe是毒霸卸載程序,若正在打開的文件路徑中是否包含uniOnst.exe,說明當前執(zhí)行的是毒霸卸載程序,有必要進行攔截,若不包括uniOnst.exe,則說明當前執(zhí)行的不是毒霸卸載程序,沒有后續(xù)處理的必要。

步驟201和202,通過判斷能夠在一些判斷條件下結(jié)束流程,節(jié)省系統(tǒng)的處理量,步驟201和202沒有一定的先后順序,也并非一定要進行的操作。

步驟203,調(diào)用內(nèi)核函數(shù)RtlWalkFrameChain獲取調(diào)用棧函數(shù)列表;

調(diào)用內(nèi)核函數(shù)RtlWalkFrameChain可以獲取調(diào)用棧函數(shù)列表,這個調(diào)用??梢垣@取到從應(yīng)用層到內(nèi)核層的調(diào)用棧,如下列表:

0x8a335f5b Kisknl!NewNtCreateSection+0xl 83

0xa73d448c Nt!NtCreateSection+0xf2---以上是內(nèi)核層模塊,以下是應(yīng)用層模塊

0x773d33cc Ndll!NtCreateSecion+0x12

0x56d3478 360killq+Ox188

0x4653076 360safe+0xc3

RtlWalkFrameChain函數(shù)獲取到的就是0x8a335f5b,0xa73d448c,0x773d33cc,0x56d3478,0x4653076等等的整個調(diào)用棧函數(shù)地址。

步驟204,查詢函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱。

通過ZwQueryVirtualMemory函數(shù)可以查詢到地址對應(yīng)的模塊名稱。

步驟205,判斷獲得的模塊名稱中是否包括預(yù)設(shè)字符串,若是,進行步驟206,否則進行步驟207。

如果包括預(yù)設(shè)字符串,即認為是在惡意調(diào)起毒霸卸載程序。預(yù)設(shè)字符串可以從一處配置文件讀取到的,并可以擴展。

步驟206,禁止卸載軟件。

禁止卸載軟件即攔截,在鉤子函數(shù)NewNtCreateSection里,不調(diào)用NtCreateSection原始函數(shù),返回拒絕訪問狀態(tài)并退出函數(shù)。這樣系統(tǒng)就不會執(zhí)行到真正的打開文件會話函數(shù),文件打開就會失敗,在到攔截的效果。

步驟207,允許卸載軟件。

允許卸載軟件即在鉤子函數(shù)NewNtCreateSection里,調(diào)用NtCreateSection原始函數(shù)。

本實例是一種全面有效的攔截方法,無需判斷調(diào)起毒霸卸載程序的父進程名,通過棧回溯方式更能準確判斷惡意卸載毒霸,這對毒霸自身反卸載能力有很大的提高,對系統(tǒng)安全有積極意義。

基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種卸載軟件的處理裝置,由于這些設(shè)備解決問題的原理與一種卸載軟件的處理方法相似,因此這些設(shè)備的實施可以參見方法的實施,重復(fù)之處不再贅述。

本發(fā)明實施例中卸載軟件的處理裝置,包括:

用于獲取卸載操作的調(diào)用棧中的函數(shù)地址列表的模塊;

用于查詢上述函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱的模塊;

用于判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,當包括所述預(yù)設(shè)字符串時禁止卸載軟件,當不包括所述預(yù)設(shè)字符串時允許卸載軟件的模塊。

進一步地,上述允許卸載軟件具體為:在鉤子函數(shù)NewNtCreateSection里,調(diào)用NtCreateSection原始函數(shù);上述禁止卸載軟件具體為:在鉤子函數(shù)NewNtCreateSection里,禁止調(diào)用NtCreateSection原始函數(shù),返回拒絕訪問狀態(tài)并退出函數(shù)。

進一步地,上述獲取卸載操作的調(diào)用棧中的函數(shù)地址列表可以為:調(diào)用內(nèi)核函數(shù)RtlWalkFrameChain獲取卸載操作的調(diào)用棧中的函數(shù)地址列表。

進一步地,上述的裝置還可以包括:

用于在獲取卸載操作的調(diào)用棧中的函數(shù)地址列表之前,判斷在NewNtCreateSection函數(shù)中,參數(shù)AllocationAttributes是否為SEC_IMAGE,若是,進行后續(xù)操作,否則結(jié)束操作的模塊。

進一步地,上述的裝置還可以包括:

用于在獲取卸載操作的調(diào)用棧中的函數(shù)地址列表之前,判斷正在打開的文件路徑中是否包含uniOnst.exe,若是,進行后續(xù)操作,否則結(jié)束操作的模塊。

進一步地,確定上述正在打開的文件路徑具體為:在NewNtCreateSection函數(shù)中,調(diào)用內(nèi)核函數(shù)ObReferenceObjectByHandle獲取文件對象指針,獲取該指針結(jié)構(gòu)里保存的正在打開的文件路徑。

為了描述的方便,以上所述裝置的各部分以功能分為各種模塊或單元分別描述。當然,在實施本發(fā)明時可以把各模塊或單元的功能在同一個或多個軟件或硬件中實現(xiàn)。

基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種電子設(shè)備,由于電子設(shè)備解決問題的原理與一種阻止惡意加載驅(qū)動的方法相似,因此這些設(shè)備的實施可以參見方法的實施,重復(fù)之處不再贅述。

如圖3所示,本發(fā)明實施例提供的電子設(shè)備,包括:殼體31、處理器32、存儲器33、電路板34和電源電路35,其中,電路板34安置在殼體31圍成的空間內(nèi)部,處理器32和存儲器33設(shè)置在電路板上34;電源電路35,用于為上述電子設(shè)備的各個電路或器件供電;存儲器33用于存儲可執(zhí)行程序代碼;處理器32通過讀取存儲器33中存儲的可執(zhí)行程序代碼來運行與可執(zhí)行程序代碼對應(yīng)的程序,用于執(zhí)行如下操作:

獲取卸載操作的調(diào)用棧中的函數(shù)地址列表;

查詢所述函數(shù)地址列表中各個函數(shù)地址對應(yīng)的模塊名稱;

判斷所述模塊名稱中是否包括預(yù)設(shè)字符串,當包括所述預(yù)設(shè)字符串時,禁止卸載軟件;當不包括所述預(yù)設(shè)字符串時,允許卸載軟件。

本發(fā)明實施例提供了一種存儲介質(zhì),其中,該存儲介質(zhì)用于存儲應(yīng)用程序,所述應(yīng)用程序用于在運行時執(zhí)行本發(fā)明實施例所述的一種卸載軟件的處理方法。

本發(fā)明實施例提供了一種應(yīng)用程序,其中,該應(yīng)用程序用于在運行時執(zhí)行本發(fā)明實施例所述的一種卸載軟件的處理方法。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、設(shè)備(系統(tǒng))、或計算機程序產(chǎn)品。本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1