本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別地涉及一種檢測文件的方法和裝置。
背景技術(shù):隨著計算機技術(shù)的發(fā)展,計算機病毒也在日益影響著計算機用戶的數(shù)據(jù)安全或使用體驗。為此很多計算機安裝了防毒軟件(或稱殺毒軟件、防火墻等)以抵抗計算機病毒。一些計算機病毒的作者為了避免自己編寫的病毒文件被防毒軟件檢測出來,通常會先將編寫好的病毒文件交給防毒軟件進行檢測,看該防毒軟件是否能夠檢測出該文件為病毒文件;如果防毒軟件檢測出該文件為病毒文件(此時殺毒軟件會輸出提示信息),則該作者修改該病毒文件然后再交給防毒軟件進行檢測,如此反復(fù),直到該防毒軟件無法檢測出該文件為病毒文件,此時再將該病毒文件進行發(fā)布,例如利用互聯(lián)網(wǎng)進行傳播。有時將病毒文件包含在一個正常文件中,再進行傳播。因此通常又將包含有病毒文件的文件稱作帶毒文件,有時也將包含有病毒文件的文件也稱作病毒文件,而將病毒文件簡稱為病毒。上述的通過反復(fù)修改病毒文件并用殺毒軟件檢測確認(rèn)病毒無法被殺毒軟件檢測的手段又可稱作病毒免殺。采用病毒免殺的方法得出的病毒文件因為經(jīng)過了防毒軟件的檢測,所以難以被防毒軟件發(fā)現(xiàn),因此對計算機用戶的危害很大?,F(xiàn)有技術(shù)中,對于采用病毒免殺的方法得到的計算機病毒的防御效果不佳,對于該問題,目前尚未提出有效解決方案。
技術(shù)實現(xiàn)要素:本發(fā)明的主要目的是提供一種檢測文件的方法和裝置,以解決現(xiàn)有技術(shù)對于采用病毒免殺的方法得到的計算機病毒的防御效果不佳的問題。為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種檢測文件的方法。本發(fā)明的檢測文件的方法包括:當(dāng)確定待檢測文件時,判斷所述待檢測文件是否為檢測過的文件;在確認(rèn)所述待檢測文件為已檢測過的文件的情況下,確定所述待檢測文件的最后修改時間與當(dāng)前的時間差,若所述時間差在預(yù)設(shè)時長區(qū)間內(nèi),則輸出用于說明所述待檢測文件不含病毒的提示信息。進一步地,在所述時間差在預(yù)設(shè)時長內(nèi)的情況下,所述方法還包括:檢測所述待檢測文件并保存檢測結(jié)果。進一步地,所述檢測過的文件為最近檢測過的預(yù)設(shè)數(shù)目的文件所組成的集合中的文件。進一步地,在確認(rèn)所述待檢測文件不是最近檢測過的預(yù)設(shè)數(shù)目的文件所組成的集合中的文件的情況下,用所述待檢測文件替換所述集合中最先被檢測的文件。進一步地,所述判斷該待檢測文件是否為檢測過的文件包括:判斷所述待檢測文件是否與檢測過的文件具有相同的存儲路徑,若是則確認(rèn)所述待檢測文件為已檢測過的文件;或者,所述判斷該待檢測文件是否為檢測過的文件包括:判斷所述待檢測文件是否與檢測過的文件具有相同的屬性,若是則確認(rèn)所述待檢測文件為已檢測過的文件;所述屬性包括如下之一種,或其中幾種的組合:文件版本、描述、版權(quán)、產(chǎn)品名稱、公司、源文件名;或者,所述判斷該待檢測文件是否為檢測過的文件包括:判斷所述待檢測文件是否與檢測過的文件具有相同的數(shù)字簽名,若是則確認(rèn)所述待檢測文件為已檢測過的文件。根據(jù)本發(fā)明的另一方面,提供了一種檢測文件的裝置。本發(fā)明的檢測文件的裝置包括:第一確定模塊,用于確定待檢測文件;判斷模塊,用于判斷所述待檢測文件是否為檢測過的文件;第二確定模塊,用于在所述待檢測文件為已檢測過的文件的情況下,確定所述待檢測文件的最后修改時間與當(dāng)前的時間差;輸出模塊,用于若所述時間差在預(yù)設(shè)時長區(qū)間內(nèi),則輸出用于說明所述待檢測文件不含病毒的提示信息。進一步地,還包括檢測模塊,用于在所述時間差在預(yù)設(shè)時長內(nèi)的情況下,檢測待檢測文件并保存檢測結(jié)果。進一步地,所述判斷模塊還可用于判斷待檢測文件是否為最近檢測過的預(yù)設(shè)數(shù)目的文件所組成的集合中的文件。進一步地,還包括替換模塊,用于在待檢測文件不是最近檢測過的預(yù)設(shè)數(shù)目的文件所組成的集合中的文件的情況下,用待檢測文件替換集合中最先被檢測的文件。進一步地,所述判斷模塊還用于:判斷所述待檢測文件是否與檢測過的文件具有相同的存儲路徑,若是則確認(rèn)所述待檢測文件為已檢測過的文件;或者,所述判斷模塊還用于:判斷所述待檢測文件是否與檢測過的文件具有相同的屬性,若是則確認(rèn)所述待檢測文件為已檢測過的文件;所述屬性包括如下之一種,或其中幾種的組合:文件版本、描述、版權(quán)、產(chǎn)品名稱、公司、源文件名;或者,所述判斷模塊還用于:判斷所述待檢測文件是否與檢測過的文件具有相同的數(shù)字簽名,若是則確認(rèn)所述待檢測文件為已檢測過的文件。根據(jù)本發(fā)明的技術(shù)方案,對于已檢測過的文件再次檢測時,檢查該文件最后一次修改的時間,根據(jù)該時間確定是否為病毒作者在使用“病毒免殺”的方式修改病毒文件,并針對這種情況輸出文件不含病毒的信息,使病毒作者誤以為本版本的病毒文件能夠躲避殺毒軟件的檢測,由于此時的病毒文件在實際上仍可能被殺毒軟件檢測出來,因此采用本發(fā)明的技術(shù)方案有助于使“病毒免殺”的方法失效,提高對計算機病毒的防御效果。此外本發(fā)明的技術(shù)方案對于病毒作者正在修改的病毒文件脫離了病毒作者的計算機傳播出去之后仍然能夠正常檢測并輸出實際檢測結(jié)果,不影響殺毒軟件的正常功能。附圖說明說明書附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:圖1是根據(jù)本發(fā)明實施例的檢測文件的方法的基本步驟的示意圖;圖2是根據(jù)本發(fā)明實施例的檢測文件的裝置的示意圖。具體實施方式需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。本發(fā)明實施例的檢測文件的方法由防毒軟件執(zhí)行,可按圖1所示步驟進行。圖1是根據(jù)本發(fā)明實施例的檢測文件的方法的基本步驟的示意圖。如圖1所示,本發(fā)明實施例的檢測文件的方法主要包括如下步驟:步驟S11:確定待檢測文件。本步驟可以是由防毒軟件按用戶的指令確定待檢測文件,也可以是由防毒軟件本身的探測功能例如探測到有外部存儲裝置連接到計算機從而確定該外部存儲裝置中的文件為待檢測文件。步驟S12:判斷待檢測文件是否為檢測過的文件??梢詫ψ罱鼨z測過的N個(N預(yù)先設(shè)定)文件的固定的信息進行記錄,被記錄信息的文件從而構(gòu)成一個集合,這樣檢測過的文件就是該集合中的文件。具體可以是記錄最近檢測過的N個文件在計算機中的存儲路徑,因為在計算機中文件的存儲路徑通常很少改變。這樣,本步驟中具體是判斷待檢測的文件與檢測過的文件是否具有相同的存儲路徑。判斷時只需將待檢測的文件與上述集合中的文件進行存儲路徑的比較即可。如果待檢測的文件與檢測過的文件具有相同的存儲路徑,就確認(rèn)待檢測文件為已檢測過的文件。類似地,除了比較文件的存儲路徑,還可以比較文件的屬性,這里屬性主要可以是文件版本、描述、版權(quán)、產(chǎn)品名稱、公司、源文件名。因為病毒文件通常為可執(zhí)行文件,在病毒文件的編寫過程中,有些作者會填寫文件的上述屬性信息,例如版本為“2011.1.01”、描述為“下載助手”等,這些屬性信息通常也不會被修改,所以可以用它們來標(biāo)識一個可執(zhí)行文件。優(yōu)選地可以采用上述屬性中的一種或幾種的組合來標(biāo)識一個可執(zhí)行文件,使標(biāo)識的唯一性更強,以避免可能產(chǎn)生的重復(fù)標(biāo)識。此外因為有些病毒文件的作者會盜用或捏造一個數(shù)字簽名,所以還可以采用數(shù)字簽名來標(biāo)識可執(zhí)行文件,這樣在上述的比較中,可以比較文件的數(shù)字簽名。當(dāng)然對于文件的標(biāo)識不限于此,可以采用任何有效的文件標(biāo)識方式。根據(jù)本步驟的判斷結(jié)果,如果為“是”,則進入步驟S13,否則進入步驟S17。步驟S13:確定待檢測文件的最后修改時間與當(dāng)前的時間差。因為文件在編輯之后,會自動保存修改時間,所以可以確定待檢測文件的最后修改時間與當(dāng)前的時間差。步驟S14:判斷步驟S13中確定的時間差是否在預(yù)設(shè)區(qū)間內(nèi),若是,進入步驟S15,否則進入步驟S17。本步驟中,預(yù)設(shè)區(qū)間可以是(0,H]。H可以用小時作單位,取值例如24。步驟S15:輸出用于說明待檢測文件不含病毒的提示信息。例如輸出文字:“文件**是安全的”。其中“**”可以是具體的文件名??蛇x地,本步驟之后進入步驟S16。步驟S16:對于待檢測文件進行檢測看其是否含有病毒,然后輸出用于說明待檢測文件不含病毒的提示信息。本步驟中的檢測主要是為了獲取其他需要的信息。然后進入步驟S20。步驟S17:對于待檢測文件進行檢測看其是否含有病毒,若是,則進入步驟S18,否則進入步驟S19。步驟S18:輸出用于提示待檢測文件包含病毒的提示信息。然后進入步驟S20。步驟S19:輸出用于提示待檢測文件不含病毒的提示信息。然后進入步驟S20。步驟S20:用當(dāng)前的待檢測文件替換上述集合中的最先被檢測過的文件。這樣可以保證該集合中的文件為最近被檢測的文件。按上述步驟執(zhí)行,有助于使病毒免殺的手段失效,從而使病毒作者認(rèn)為不可能被殺毒軟件檢測出的病毒文件在發(fā)布之后被殺毒軟件檢測到。以下對此作具體分析。例如病毒作者編寫完成病毒文件第一版,然后由殺毒軟件進行檢測,此時執(zhí)行步驟S11和步驟S12,因為對于剛編寫完成的病毒文件是第一次檢測,所以進入步驟S17。因為通常很難一次就編寫出不被殺毒軟件檢測到病毒的病毒文件,所以在步驟S17中的檢測之后會進入步驟S18,然后步驟S20。病毒作者就根據(jù)步驟S18中輸出的提示信息對病毒文件做出修改得到病毒文件第二版,修改之后通常會對立即進行檢測,此時回到步驟S11,然后步驟S12,因為在已執(zhí)行過的步驟S20中,剛檢測過的病毒文件第一版已經(jīng)進入了檢測過的文件的集合,所以在步驟S12中的判斷結(jié)果為“是”,進入步驟S13和步驟S14。因為是修改之后的不長的時間內(nèi)就進行了再次檢測,通過設(shè)置合適的H值,可以使步驟S14中確定修改時間與當(dāng)前時間差落在預(yù)設(shè)區(qū)間內(nèi),于是進入步驟S15,輸出用于說明待檢測文件不含病毒的提示信息。此時病毒作者會認(rèn)為病毒文件第二版已經(jīng)能夠躲避殺毒軟件的檢測,從而停止這方面的修改。可以看出,根據(jù)本實施例的技術(shù)方案,能夠使病毒文件在修改一次之后即被作者認(rèn)為是能夠躲避殺毒軟件的檢測,由于通常修改一次之后的病毒文件通常在實際上仍然很有可能被檢測出來,所以如果作者據(jù)此發(fā)布該病毒文件,那么病毒文件進入其他計算機時就會被檢測出。這樣就使得病毒作者的“病毒免殺”的手段失效。又如對于計算機中普通的可執(zhí)行文件,因為它們通常不被修改,因此它們的最后一次修改時間往往與當(dāng)前時間相差甚遠(yuǎn),從圖1的流程中可以看出,這些文件都會被正常檢測并輸出實際的檢測結(jié)果。以下對于本實施例中的檢測文件的裝置做出說明。圖2是根據(jù)本發(fā)明實施例的檢測文件的裝置的示意圖。如圖2所示,本發(fā)明實施例中的檢測文件的裝置20主要包括如下模塊:第一確定模塊21,用于確定待檢測文件;判斷模塊22,用于判斷待檢測文件是否為檢測過的文件;第二確定模塊23,用于在待檢測文件為已檢測過的文件的情況下,確定待檢測文件的最后修改時間與當(dāng)前的時間差;輸出模塊24,用于若時間差在預(yù)設(shè)時長區(qū)間內(nèi),則輸出用于說明待檢測文件不含病毒的提示信息。檢測文件的裝置20還可包括檢測模塊(圖中未示出),用于在所述時間差在預(yù)設(shè)時長內(nèi)的情況下,檢測待檢測文件并保存檢測結(jié)果。判斷模塊22還可用于判斷待檢測文件是否為最近檢測過的預(yù)設(shè)數(shù)目的文件所組成的集合中的文件。檢測文件的裝置20還可包括替換模塊(圖中未示出),用于在待檢測文件不是最近檢測過的預(yù)設(shè)數(shù)目的文件所組成的集合中的文件的情況下,用待檢測文件替換集合中最先被檢測的文件。判斷模塊22還可用于:判斷待檢測文件是否與檢測過的文件具有相同的存儲路徑,若是則確認(rèn)待檢測文件為已檢測過的文件。判斷模塊22還可用于:判斷待檢測文件是否與檢測過的文件具有相同的屬性,若是則確認(rèn)待檢測文件為已檢測過的文件;該屬性包括如下之一種,或其中幾種的組合:文件版本、描述、版權(quán)、產(chǎn)品名稱、公司、源文件名。判斷模塊22還可用于:判斷待檢測文件是否與檢測過的文件具有相同的數(shù)字簽名,若是則確認(rèn)待檢測文件為已檢測過的文件。根據(jù)本發(fā)明實施例的技術(shù)方案,對于已檢測過的文件再次檢測時,檢查該文件最后一次修改的時間,根據(jù)該時間確定是否為病毒作者在使用“病毒免殺”的方式修改病毒文件,并針對這種情況輸出文件不含病毒的信息,使病毒作者誤以為本版本的病毒文件能夠躲避殺毒軟件的檢測,由于此時的病毒文件在實際上仍可能被殺毒軟件檢測出來,因此采用本發(fā)明的技術(shù)方案有助于使“病毒免殺”的方法失效,提高對計算機病毒的防御效果。此外本發(fā)明的技術(shù)方案對于病毒作者正在修改的病毒文件之外的普通文件仍然能夠正常檢測并輸出實際檢測結(jié)果,不影響殺毒軟件的正常功能。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。