專(zhuān)利名稱(chēng):刪除正在運(yùn)行中的病毒的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種刪除病毒文件的方法。
背景技術(shù):
當(dāng)計(jì)算機(jī)己經(jīng)被病毒程序感染以后,病毒程序處于運(yùn)行狀態(tài), 這時(shí)正在運(yùn)行的文件是受操作系統(tǒng)保護(hù)的,是禁止刪除的。例如,當(dāng)
打開(kāi)一個(gè)WORD文件時(shí),如果用戶(hù)試圖刪除該文件,系統(tǒng)會(huì)提示文件 被占用而無(wú)法刪除。這就造成查殺病毒時(shí)無(wú)法清除正在運(yùn)行的病毒的 問(wèn)題。
以往的方法都是重新啟動(dòng)計(jì)算機(jī),在病毒運(yùn)行之前刪除它,這 要求用戶(hù)重新啟動(dòng)計(jì)算機(jī),而在某些服務(wù)器上并不是隨時(shí)都能重啟 的,這就造成了殺毒不徹底的情況,還有些病毒本身做了自我保護(hù), 它的進(jìn)程不能被直接結(jié)束。所以要想徹底根除病毒,就要?jiǎng)h除病毒文 件。
計(jì)算機(jī)里的文件有訪問(wèn)權(quán)限,如執(zhí)行方式、共享讀權(quán)限、獨(dú)占讀 權(quán)限、共享寫(xiě)權(quán)限、獨(dú)占寫(xiě)權(quán)限、刪除權(quán)限,這里"獨(dú)占"的意思是 一個(gè)用戶(hù)打開(kāi)時(shí)其他用戶(hù)就不能打開(kāi)了。當(dāng)一個(gè)文件被訪問(wèn)時(shí),首次 打開(kāi)這個(gè)文件時(shí)可以賦予這個(gè)文件一些權(quán)限(如共享讀權(quán)限,獨(dú)占寫(xiě) 權(quán)限或者刪除權(quán)限),其中以執(zhí)行方式打開(kāi)的文件是由系統(tǒng)以可執(zhí)行 的方式打開(kāi)的,沒(méi)有刪除權(quán)限的。所以當(dāng)病毒在運(yùn)行的時(shí)候,如果以 刪除權(quán)限打開(kāi)它就會(huì)失敗,文件就無(wú)法刪除。因此,目前對(duì)于正在運(yùn) 行的病毒文件尚不能即時(shí)刪除。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種可刪除正在運(yùn)行的病毒的方法,達(dá)到 徹底清除病毒的目的。
根據(jù)本發(fā)明,提供一種用于刪除正在運(yùn)行的病毒文件的方法,包
括
攔截由操作系統(tǒng)內(nèi)核導(dǎo)出的用于文件的權(quán)限驗(yàn)證的函數(shù); 發(fā)現(xiàn)正在運(yùn)行的病毒文件;
當(dāng)有對(duì)于該病毒文件的打開(kāi)請(qǐng)求時(shí),由文件系統(tǒng)調(diào)用所述用于文 件的權(quán)限驗(yàn)證的函數(shù);
當(dāng)確定該文件打開(kāi)請(qǐng)求是由指定的殺毒軟件提出并將刪除該病 毒文件時(shí),修改所述用于文件的權(quán)限驗(yàn)證的函數(shù)的參數(shù)或返回值,使 得文件系統(tǒng)成功完成文件的權(quán)限驗(yàn)證,以允許該指定的殺毒軟件刪除 該病毒文件。
在本發(fā)明的實(shí)施例中,所述用于文件的權(quán)限驗(yàn)證的函數(shù)是由
Windows NT內(nèi)核導(dǎo)出的以下三個(gè)函數(shù)
IoCheckShareAccess、 MmFlushlmageSection禾口 SeAccessCheck。 在本發(fā)明的實(shí)施例中,所述攔截步驟包括修改文件FAT.SYS
和NTFS.SYS被加載后的內(nèi)存鏡像的引入表,使其指向指定的權(quán)限驗(yàn)
證驅(qū)動(dòng)。
在本發(fā)明的實(shí)施例中,所述用于文件的權(quán)限驗(yàn)證的函數(shù)的參數(shù)或 返回值被修改成說(shuō)明文件的權(quán)限驗(yàn)證成功的狀態(tài)。
通過(guò)在殺毒軟件中采用本發(fā)明的方法,可以強(qiáng)制刪除正在運(yùn)行的 病毒文件,提高殺毒軟件的殺毒能力。
以下結(jié)合附圖進(jìn)一步描述本發(fā)明的實(shí)施例。
圖1是根據(jù)本發(fā)明的實(shí)施例進(jìn)行強(qiáng)制殺毒的流程圖;圖2是根據(jù)本發(fā)明的實(shí)施例進(jìn)行強(qiáng)制殺毒的實(shí)例示意圖。
具體實(shí)施例方式
圖1和圖2示出本發(fā)明的一個(gè)優(yōu)選實(shí)施例。以下參照?qǐng)D1和圖2, 描述在該實(shí)施例刪除正在運(yùn)行的病毒文件的過(guò)程。 (1)首先攔截如下三個(gè)函數(shù)
IoCheckShareAccess, MmFlushlmageSection, SeAccessCheck
當(dāng)文件被打開(kāi)時(shí),文件系統(tǒng)會(huì)對(duì)這個(gè)文件打開(kāi)請(qǐng)求進(jìn)行權(quán)限驗(yàn) 證,只有權(quán)限驗(yàn)證通過(guò)的才可以打開(kāi)文件.
一個(gè)文件首次被打開(kāi)時(shí),Windows NT系統(tǒng)會(huì)調(diào)用由其內(nèi)核的 IoSetShareAccess, IoUpdateShareAccess這兩個(gè)函數(shù)來(lái)設(shè)置文件初 始權(quán)限,這兩個(gè)函數(shù)是美國(guó)微軟公司公開(kāi)的函數(shù),本領(lǐng)域技術(shù)人員都 可以查看到函數(shù)的具體說(shuō)明。這兩個(gè)函數(shù)主要是用于在文件打開(kāi)時(shí)設(shè) 置文件的共享權(quán)限和更新權(quán)限。
當(dāng)文件再次被打開(kāi)時(shí),系統(tǒng)會(huì)調(diào)用IoCheckShareAccess , MmFlushlmageSection, SeAccessCheck三個(gè)函數(shù)進(jìn)行文件權(quán)限的驗(yàn) 證,這三個(gè)函數(shù)都是由WINDOWS NT內(nèi)核導(dǎo)出的函數(shù),也是微軟公司 公開(kāi)的函數(shù)。本領(lǐng)域技術(shù)人員同樣可以在微軟公司的網(wǎng)站上查找這三 個(gè)函數(shù)的定義和相關(guān)說(shuō)明。
IoCheckShareAccess是用來(lái)驗(yàn)證共享權(quán)限是否合法,它要去調(diào) 用SeAccessCheck函數(shù)去獲得文件在第一次打開(kāi)時(shí)所設(shè)置的權(quán)限,如 果合法文件打開(kāi)操作則繼續(xù),否則文件打開(kāi)操作就會(huì)被中止。
MmFlushlmageSection是用來(lái)將在內(nèi)存中的文件數(shù)據(jù)寫(xiě)入到磁盤(pán) 上的一個(gè)函數(shù),它是整個(gè)驗(yàn)證過(guò)程的輔助函數(shù),文件在以寫(xiě)權(quán)限和刪 除權(quán)限打開(kāi)時(shí)都要調(diào)用這個(gè)函數(shù),以實(shí)現(xiàn)數(shù)據(jù)同步,避免有損壞的文 件發(fā)生。如果這個(gè)函數(shù)調(diào)用失敗,也會(huì)迫使文件權(quán)限驗(yàn)證中止。這三 個(gè)函數(shù)都返回了正確的結(jié)果,文件打開(kāi)的驗(yàn)證操作就成功了?;谏鲜銮闆r,在該實(shí)施例中對(duì)上述三個(gè)函數(shù)進(jìn)行攔截,通過(guò)修 改函數(shù)的參數(shù)或返回值來(lái)達(dá)到權(quán)限驗(yàn)證合法化的目的。
這些函數(shù)的具體攔截方法是修改FAT.SYS、 NTFS.SYS文件被加 載后的內(nèi)存鏡像的引入表,使其指向用戶(hù)指定的權(quán)限驗(yàn)證驅(qū)動(dòng),這樣 當(dāng)文件打開(kāi)時(shí),就可以攔截到這三個(gè)函數(shù)的調(diào)用,在判斷是不是用戶(hù) 指定的殺毒程序要?jiǎng)h除病毒文件(判斷方法是如果是用戶(hù)自己指定 的殺毒程序就進(jìn)行返回值或參數(shù)修改),如果是用戶(hù)指定的殺毒軟件 的殺毒請(qǐng)求,就修改這三個(gè)函數(shù)的返回值或參數(shù),以達(dá)到繞過(guò)文件系 統(tǒng)的權(quán)限驗(yàn)證的目的。
(2) 用戶(hù)執(zhí)行查毒掃描或文件監(jiān)控發(fā)現(xiàn)有文件打開(kāi)操作。
(3) 由病毒掃描程序(如Rav. exe)調(diào)用引擎掃描病毒文件(如 c:\virus.exe),如圖2所示。
(4) 引擎調(diào)用文件系統(tǒng)(FAT. SYS或NTFS. SYS)打開(kāi)文件,進(jìn)行文件 掃描,調(diào)用磁盤(pán)系統(tǒng)讀取文件(c: \virus. exe)的數(shù)據(jù),看是不是病毒, 如果是病毒則根據(jù)用戶(hù)查毒設(shè)置進(jìn)行操作,如果是刪除病毒文件,則 調(diào)用文件系統(tǒng)以刪除方式打開(kāi)病毒文件(c:^irus. exe),準(zhǔn)備刪除,
那么將會(huì)觸犯文件系統(tǒng)的文件權(quán)限驗(yàn)證機(jī)制。
(5) 當(dāng)有文件打開(kāi)請(qǐng)求時(shí),文件系統(tǒng)調(diào)用
IoCheckShareAccess, MmFlushlmageSection, SeAccessCheck 這三個(gè)函數(shù)進(jìn)行文件權(quán)限驗(yàn)證,由于這三個(gè)函數(shù)都已經(jīng)被攔截 了,所以可以對(duì)其返回值和參數(shù)進(jìn)行修改。
(6) 檢査是不是用戶(hù)指定的殺毒軟件打開(kāi)病毒文件并將刪除病 毒文件;
(7) 由修改權(quán)限驗(yàn)證模塊修改如上三個(gè)函數(shù)的參數(shù)或返回值,使 文件的權(quán)限驗(yàn)證成功,從而可以繞過(guò)文件系統(tǒng)的權(quán)限控制來(lái)達(dá)到權(quán)限 驗(yàn)證合法化的目的,由此允許刪除磁盤(pán)上的病毒文件,以便成功地徹 底清除病毒。本實(shí)施例適用于WINDOWS NT系統(tǒng),包括64位系統(tǒng)。 在其它的操作系統(tǒng)中存在與上述三個(gè)函數(shù)類(lèi)似的用于文件的權(quán)限
驗(yàn)證的函數(shù)。應(yīng)用本發(fā)明的方法同樣可以達(dá)到刪除正在運(yùn)行的病毒文
件之效果。
以上實(shí)施例是用于對(duì)本發(fā)明做示例性說(shuō)明,而不是對(duì)于本發(fā)明的 限定。本領(lǐng)域技術(shù)人員可以采用公知技術(shù)常識(shí),以其它可替換的手段 對(duì)本發(fā)明進(jìn)行相應(yīng)的修改和變型以適用于不同的應(yīng)用。本發(fā)明的保護(hù) 范圍應(yīng)該以權(quán)利要求書(shū)的限定為準(zhǔn)。
權(quán)利要求
1、一種用于刪除正在運(yùn)行的病毒文件的方法,包括攔截由操作系統(tǒng)內(nèi)核導(dǎo)出的用于文件的權(quán)限驗(yàn)證的函數(shù);發(fā)現(xiàn)正在運(yùn)行的病毒文件;當(dāng)有對(duì)于該病毒文件的打開(kāi)請(qǐng)求時(shí),由文件系統(tǒng)調(diào)用所述用于文件的權(quán)限驗(yàn)證的函數(shù);當(dāng)確定該文件打開(kāi)請(qǐng)求是由指定的殺毒軟件提出并將刪除該病毒文件時(shí),修改所述用于文件的權(quán)限驗(yàn)證的函數(shù)的參數(shù)或返回值,使得文件系統(tǒng)成功完成文件的權(quán)限驗(yàn)證,以允許該指定的殺毒軟件刪除該病毒文件。
2、 根據(jù)權(quán)利要求1所述的方法,其中,所述用于文件的權(quán)限驗(yàn) 證的函數(shù)是由Windows NT內(nèi)核導(dǎo)出的以下三個(gè)函數(shù)IoCheckShareAccess、 MmFlushlmageSection禾口 SeAccessCheck。
3、 根據(jù)權(quán)利要求1所述的方法,其中,所述攔截步驟包括修改文件FAT.SYS和NTFS.SYS被加載后的內(nèi)存鏡像的引入表, 使其指向指定的權(quán)限驗(yàn)證驅(qū)動(dòng)。
4、 根據(jù)權(quán)利要求1所述的方法,其中,所述用于文件的權(quán)限驗(yàn) 證的函數(shù)的參數(shù)或返回值被修改成說(shuō)明文件的權(quán)限驗(yàn)證成功的狀態(tài)。
全文摘要
本發(fā)明涉及一種用于刪除正在運(yùn)行的病毒文件的方法,包括攔截由操作系統(tǒng)內(nèi)核導(dǎo)出的用于文件的權(quán)限驗(yàn)證的函數(shù);發(fā)現(xiàn)正在運(yùn)行的病毒文件;當(dāng)有對(duì)于該病毒文件的打開(kāi)請(qǐng)求時(shí),由文件系統(tǒng)調(diào)用所述用于文件的權(quán)限驗(yàn)證的函數(shù);當(dāng)確定該文件打開(kāi)請(qǐng)求是由指定的殺毒軟件提出并將刪除該病毒文件時(shí),修改所述用于文件的權(quán)限驗(yàn)證的函數(shù)的參數(shù)或返回值,使得文件系統(tǒng)成功完成文件的權(quán)限驗(yàn)證,以允許該指定的殺毒軟件刪除該病毒文件,從而清除病毒。
文檔編號(hào)G06F21/00GK101414329SQ20071016244
公開(kāi)日2009年4月22日 申請(qǐng)日期2007年10月15日 優(yōu)先權(quán)日2007年10月15日
發(fā)明者宇 韓 申請(qǐng)人:北京瑞星國(guó)際軟件有限公司