本發(fā)明涉及計算機(jī)安全技術(shù)領(lǐng)域,尤其涉及一種防止系統(tǒng)被惡意關(guān)閉的方法、裝置及電子設(shè)備。
背景技術(shù):
在Windows系統(tǒng)中,為阻止惡意程序關(guān)閉系統(tǒng),通常情況下是Hook Windows系統(tǒng)內(nèi)核層的常規(guī)關(guān)閉系統(tǒng)的函數(shù)NtShutdownSystem,繼而達(dá)到系統(tǒng)關(guān)機(jī)保護(hù)的目的。
在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)Windows系統(tǒng)內(nèi)核層還提供了NtRaiseHardError函數(shù),此函數(shù)可以產(chǎn)生一個系統(tǒng)錯誤,并且可為此錯誤設(shè)置一個錯誤報告選項(xiàng),其值為0到8的整數(shù),其中當(dāng)該選項(xiàng)為6時,表示產(chǎn)生錯誤時并關(guān)閉系統(tǒng),所以有的惡意程序可以通過調(diào)用內(nèi)核的NtRaiseHardError函數(shù)來對系統(tǒng)進(jìn)行關(guān)機(jī)操作,此方法比較隱蔽,這樣惡意軟件就能夠破壞用戶系統(tǒng),導(dǎo)致用戶的數(shù)據(jù)被損壞。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供一種防止系統(tǒng)被惡意關(guān)閉的方法、裝置及電子設(shè)備,能有效的阻止惡意程序關(guān)閉系統(tǒng),達(dá)到保護(hù)系統(tǒng)及用戶數(shù)據(jù)的目的。
第一方面,本發(fā)明實(shí)施例提供一種防止系統(tǒng)被惡意關(guān)閉的方法,包括:
監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件;
根據(jù)監(jiān)聽到的所述事件,獲取所述進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù);
判斷所述錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù);
若所述錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則獲取所述進(jìn)程路徑;
根據(jù)所述進(jìn)程路徑,判斷所述進(jìn)程是否是惡意進(jìn)程;
若所述進(jìn)程是惡意進(jìn)程,則拒絕產(chǎn)生系統(tǒng)錯誤。
結(jié)合第一方面,在第一方面的第一種實(shí)施方式中,所述系統(tǒng)為Windows操作系統(tǒng);所述產(chǎn)生系統(tǒng)錯誤函數(shù)為操作系統(tǒng)內(nèi)核層的NtRaiseHardError函數(shù);
在監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件之前,所述方法還包括:預(yù)先設(shè)置掛鉤操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)的鉤子函數(shù);
所述監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件,包括:通過所述鉤子函數(shù)監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件。
結(jié)合第一方面的第一種實(shí)施方式,在第一方面的第二種實(shí)施方式中,所述拒絕產(chǎn)生系統(tǒng)錯誤,包括:
通過所述鉤子函數(shù)向所述進(jìn)程返回拒絕消息;或者
所述鉤子函數(shù)拒絕調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù),以拒絕產(chǎn)生系統(tǒng)錯誤。
結(jié)合第一方面的第一種實(shí)施方式,在第一方面的第三種實(shí)施方式中,所述判斷所述錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),包括:
判斷所述錯誤報告選項(xiàng)參數(shù)是否為6,是則確定所述錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),否則確定所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)。
結(jié)合第一方面的第一種實(shí)施方式,在第一方面的第四種實(shí)施方式中,在根據(jù)所述進(jìn)程路徑,判斷所述進(jìn)程是否是惡意進(jìn)程之后,還包括:
若所述進(jìn)程不是惡意進(jìn)程,則調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù),以產(chǎn)生系統(tǒng)錯誤;
在判斷所述錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)之后,還包括:
若所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則跳至執(zhí)行調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)的步驟。
結(jié)合第一方面,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述進(jìn)程路徑,判斷所述進(jìn)程是否是惡意進(jìn)程,包括:
根據(jù)預(yù)先設(shè)置的特征值算法,獲取所述進(jìn)程路徑對應(yīng)文件的特征值;
判斷預(yù)先設(shè)置的特征庫中,是否記錄有所述進(jìn)程路徑對應(yīng)文件的特征值;
若預(yù)先設(shè)置的特征庫中記錄有所述進(jìn)程路徑對應(yīng)文件的特征值,則確定所述進(jìn)程為惡意進(jìn)程;若預(yù)先設(shè)置的特征庫中沒有記錄所述進(jìn)程路徑對應(yīng)文件的特征值,則確定所述進(jìn)程不是惡意進(jìn)程;
其中,所述預(yù)先設(shè)置的特征庫中記錄有已知惡意進(jìn)程路徑對應(yīng)文件的特征值。
結(jié)合第一方面的第五種實(shí)施方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,所述預(yù)先設(shè)置的特征值算法為:
求取進(jìn)程路徑的計算消息摘要算法值或哈希值作為進(jìn)程路徑對應(yīng)文件的特征值,或者
從進(jìn)程路徑中獲取文件版本號作為進(jìn)程路徑對應(yīng)文件的特征值。
結(jié)合第一方面的第五種至第六種中任一種實(shí)施方式,在第一方面的第七種實(shí)施方式中,在所述判斷預(yù)先設(shè)置的特征庫中,是否記錄有所述進(jìn)程路徑對應(yīng)文件的特征值之前,還包括:
統(tǒng)計已知惡意進(jìn)程路徑;
根據(jù)預(yù)先設(shè)置的特征值算法,獲取所述已知惡意進(jìn)程路徑對應(yīng)文件的特征值;
將已知惡意進(jìn)程路徑的特征值存儲在特征庫中。
第二方面,本發(fā)明實(shí)施例提供一種防止系統(tǒng)被惡意關(guān)閉的裝置,包括:
監(jiān)聽模塊,用于監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件;
錯誤報告獲取模塊,用于根據(jù)所述監(jiān)聽模塊監(jiān)聽到的事件,獲取所述進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù);
第一判斷模塊,用于判斷所述錯誤報告獲取模塊獲取的所述錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù);
進(jìn)程獲取模塊,用于在所述第一判斷模塊判斷出所述錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)時,獲取所述進(jìn)程路徑;
第二判斷模塊,用于根據(jù)所述進(jìn)程獲取模塊獲取到的所述進(jìn)程路徑,判斷所述進(jìn)程是否是惡意進(jìn)程;
拒絕模塊,用于在所述第二判斷模塊判斷出所述進(jìn)程是惡意進(jìn)程時,拒絕產(chǎn)生系統(tǒng)錯誤。
結(jié)合第二方面,在第二方面的第一種實(shí)施方式中,所述操作系統(tǒng)為Windows操作系統(tǒng)時,所述監(jiān)聽模塊中預(yù)先設(shè)置有掛鉤操作系統(tǒng)內(nèi)核層的NtRaiseHardError函數(shù)的鉤子函數(shù),所述監(jiān)聽模塊通過所述鉤子函數(shù)監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件。
結(jié)合第二方面的第一種實(shí)施方式,在第二方面的第二種實(shí)施方式中,所述拒絕模塊通過所述鉤子函數(shù)向所述進(jìn)程返回拒絕消息或拒接調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù),以拒絕產(chǎn)生系統(tǒng)錯誤。
結(jié)合第二方面的第一種實(shí)施方式,在第二方面的第三種實(shí)施方式中,所述第一判斷模塊判斷所述錯誤報告獲取模塊獲取的所述錯誤報告選項(xiàng)參數(shù)是否為6,是則確定所述錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),否則確定所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)。
結(jié)合第二方面的第一種實(shí)施方式,在第二方面的第四種實(shí)施方式中,所述拒絕模塊,還用于在所述第二判斷模塊判斷出所述進(jìn)程不是惡意進(jìn)程或所述第一判斷模塊判斷出所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)時,調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)以產(chǎn)生系統(tǒng)錯誤。
結(jié)合第二方面,在第二方面的第五種實(shí)施方式中,所述第二判斷模塊包括:
特征值計算子模塊,用于根據(jù)預(yù)先設(shè)置的特征值算法,獲取所述進(jìn)程獲取模塊獲取到的進(jìn)程路徑對應(yīng)文件的特征值;
匹配子模塊,用于判斷預(yù)先設(shè)置的特征庫中,是否記錄有所述特征值計算子模塊獲取到的進(jìn)程路徑對應(yīng)文件的特征值,若預(yù)先設(shè)置的特征庫中記錄有所述進(jìn)程路徑對應(yīng)文件的特征值,則確定所述進(jìn)程為惡意進(jìn)程;若預(yù)先設(shè)置的特征庫中沒有記錄所述進(jìn)程路徑對應(yīng)文件的特征值,則確定所述進(jìn)程不是惡意進(jìn)程;其中,所述預(yù)先設(shè)置的特征庫中記錄有已知惡意進(jìn)程路徑對應(yīng)文件的特征值。
結(jié)合第二方面的第五種實(shí)施方式,在第二方面的第六種實(shí)施方式中,所述特征值計算子模塊具體用于求取所述進(jìn)程獲取模塊獲取到的進(jìn)程路徑的計算消息摘要算法值或哈希值作為進(jìn)程路徑對應(yīng)文件的特征值,或者從所述進(jìn)程獲取模塊獲取到的進(jìn)程路徑中獲取文件版本號作為進(jìn)程路徑對應(yīng)文件的特征值。
結(jié)合第二方面的第五種或第六種實(shí)施方式,在第二方面的第七種實(shí)施方式中,所述防止系統(tǒng)被惡意關(guān)閉的裝置還包括:
特征庫生成模塊,用于預(yù)先統(tǒng)計已知惡意進(jìn)程路徑,并根據(jù)預(yù)先設(shè)置的特征值算法,獲取所述已知惡意進(jìn)程路徑對應(yīng)文件的特征值并存儲在特征庫中。
第三方面,本發(fā)明實(shí)施例提供一種電子設(shè)備,所述電子設(shè)備包括:殼體、處理器、存儲器、電路板和電源電路,其中,電路板安置在殼體圍成的空間內(nèi)部,處理器和存儲器設(shè)置在電路板上;電源電路,用于為上述電子設(shè)備的各個電路或器件供電;存儲器用于存儲可執(zhí)行程序代碼;處理器通過讀取存儲器中存儲的可執(zhí)行程序代碼來運(yùn)行與可執(zhí)行程序代碼對應(yīng)的程序,用于執(zhí)行前述任一實(shí)施例所述的防止系統(tǒng)被惡意關(guān)閉的方法。
本發(fā)明實(shí)施例提供的一種防止系統(tǒng)被惡意關(guān)閉的方法、裝置及電子設(shè)備,通過對操作系統(tǒng)的產(chǎn)生系統(tǒng)錯誤函數(shù)被進(jìn)程調(diào)用的事件進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到有進(jìn)程調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)時,獲取所述進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù),并判斷所述錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),當(dāng)錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則獲取所述進(jìn)程路徑,并根據(jù)所述進(jìn)程路徑判斷該進(jìn)程是否是惡意進(jìn)程,若所述進(jìn)程是惡意進(jìn)程,則拒絕產(chǎn)生系統(tǒng)錯誤。由此能夠能能夠攔截惡意軟件采用隱蔽方式關(guān)閉系統(tǒng)的行為,達(dá)到保護(hù)系統(tǒng)及用戶數(shù)據(jù)的目的。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的方法實(shí)施例一的流程圖;
圖2為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的方法實(shí)施例二的流程圖;
圖3為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的裝置實(shí)施例一的結(jié)構(gòu)示意圖;
圖4為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的裝置實(shí)施例三的結(jié)構(gòu)示意圖;
圖5為本發(fā)明電子設(shè)備一個實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明實(shí)施例一種防止系統(tǒng)被惡意關(guān)閉的方法、裝置及電子設(shè)備進(jìn)行詳細(xì)描述。
應(yīng)當(dāng)明確,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的方法實(shí)施例一的流程圖,如圖1所示,本實(shí)施例的方法可以包括:
步驟101、監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件。
操作系統(tǒng)提供了產(chǎn)生系統(tǒng)錯誤函數(shù)。惡意應(yīng)用程序的進(jìn)程通過調(diào)用所述產(chǎn)生系統(tǒng)錯誤函數(shù)可產(chǎn)生一系統(tǒng)錯誤如關(guān)閉系統(tǒng)錯誤,即可實(shí)現(xiàn)惡意關(guān)機(jī)。本實(shí)施例通過對所述產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行監(jiān)視,可及時截獲惡意應(yīng)用程序要產(chǎn)生系統(tǒng)錯誤的消息。
步驟102、根據(jù)監(jiān)聽到的所述事件,獲取進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù)。
惡意應(yīng)用程序的進(jìn)程開始調(diào)用所述產(chǎn)生系統(tǒng)錯誤函數(shù)時,會向產(chǎn)生系統(tǒng)錯誤函數(shù)傳送錯誤報告選項(xiàng)參數(shù),不同的錯誤報告選項(xiàng)參數(shù)值表示不同的系統(tǒng)錯誤。本實(shí)施例中,可在所述進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù)到達(dá)所述系統(tǒng)錯誤函數(shù)之前將其截獲。
步驟103、判斷錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù);若錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則執(zhí)行步驟104。
步驟104、獲取調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)的進(jìn)程路徑。
本實(shí)施例中,若錯誤報告選項(xiàng)參數(shù)表示產(chǎn)生關(guān)閉系統(tǒng)的錯誤,則為了防止惡意進(jìn)程關(guān)閉系統(tǒng),獲取當(dāng)前調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)的進(jìn)程信息,如進(jìn)程路徑。
步驟105、根據(jù)所述進(jìn)程路徑,判斷所述進(jìn)程是否是惡意進(jìn)程;若所述進(jìn)程是惡意進(jìn)程,則執(zhí)行步驟106。
由于惡意程序幾乎無法做到隨機(jī)變換的進(jìn)程路徑,因此,通過當(dāng)前調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)的進(jìn)程路徑,可以通過調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)的進(jìn)程路徑來判斷其是否是惡意進(jìn)程。
本實(shí)施例中,作為一可選方式,可根據(jù)預(yù)先設(shè)置的特征值算法獲取所述進(jìn)程路徑對應(yīng)文件的特征值;然后判斷預(yù)先設(shè)置的特征庫中,是否記錄有所述進(jìn)程路徑對應(yīng)文件的特征值;若預(yù)先設(shè)置的特征庫中記錄有所述進(jìn)程路徑對應(yīng)文件的特征值,則確定所述進(jìn)程為惡意進(jìn)程;若預(yù)先設(shè)置的特征庫中沒有記錄所述進(jìn)程路徑對應(yīng)文件的特征值,則確定所述進(jìn)程不是惡意進(jìn)程。其中,特征庫是預(yù)先設(shè)置的,特征庫的生成過程為:統(tǒng)計已知惡意進(jìn)程路徑;根據(jù)預(yù)先設(shè)置的特征值算法,獲取所述已知惡意進(jìn)程路徑對應(yīng)文件的特征值存儲在特征庫中。
優(yōu)選地,預(yù)先設(shè)置的特征值算法為:求取進(jìn)程路徑的計算消息摘要算法(MD5)值或哈希(HASH)值作為進(jìn)程路徑對應(yīng)文件的特征值,或者從進(jìn)程路徑中獲取文件版本號作為進(jìn)程路徑對應(yīng)文件的特征值。
步驟106、拒絕產(chǎn)生系統(tǒng)錯誤。
本實(shí)施例中,若此次想要產(chǎn)生系統(tǒng)錯誤的進(jìn)程是惡意進(jìn)程,則返回拒絕消息,拒絕該進(jìn)程調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù),以拒絕產(chǎn)生系統(tǒng)錯誤。
通過上述方法,惡意進(jìn)程要通過產(chǎn)生系統(tǒng)錯誤使系統(tǒng)關(guān)閉的行為就會失敗。
本發(fā)明實(shí)施例提供的防止系統(tǒng)被惡意關(guān)閉的方法,通過對操作系統(tǒng)的產(chǎn)生系統(tǒng)錯誤函數(shù)被進(jìn)程調(diào)用的事件進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到有進(jìn)程調(diào)用產(chǎn)生系統(tǒng)錯誤函數(shù)時,獲取所述進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù),并判斷所述錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),當(dāng)錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則獲取所述進(jìn)程路徑,并根據(jù)所述進(jìn)程路徑判斷該進(jìn)程是否是惡意進(jìn)程,若所述進(jìn)程是惡意進(jìn)程,則拒絕產(chǎn)生系統(tǒng)錯誤。由此能夠能有效的阻止惡意程序關(guān)閉系統(tǒng),達(dá)到保護(hù)系統(tǒng)及用戶數(shù)據(jù)的目的。
圖2為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的方法實(shí)施例二的流程圖,本實(shí)施例用于Windows操作系統(tǒng);所述產(chǎn)生系統(tǒng)錯誤函數(shù)為操作系統(tǒng)內(nèi)核層的NtRaiseHardError函數(shù)。本發(fā)明實(shí)施例適用于金山毒霸或金山衛(wèi)士等安全防護(hù)類應(yīng)用程序?qū)Σ僮飨到y(tǒng)的關(guān)機(jī)保護(hù)。如圖2所示,本實(shí)施例的方法包括如下步驟:
步驟201、通過預(yù)先設(shè)置的鉤子(Hook)函數(shù)監(jiān)聽進(jìn)程對操作系統(tǒng)中NtRaiseHardError函數(shù)進(jìn)行調(diào)用的事件。
鉤子函數(shù)實(shí)際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達(dá)目的窗口前,鉤子函數(shù)就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時鉤子函數(shù)即可以加工處理該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。
本實(shí)施例中,鉤子函數(shù)在本步驟執(zhí)行之前預(yù)先建立在安全防護(hù)類應(yīng)用程序如金山毒霸的防御驅(qū)動中,該鉤子函數(shù)掛鉤操作系統(tǒng)中的NtRaiseHardError函數(shù)。安全防護(hù)類應(yīng)用程序的防御驅(qū)動在Windows操作系統(tǒng)開機(jī)后即開始運(yùn)行。
本實(shí)施例中,將NtRaiseHardError函數(shù)的原始入口地址修改為本實(shí)施例中的鉤子函數(shù)的入口地址。惡意進(jìn)程在調(diào)用NtRaiseHardError函數(shù)時,由于NtRaiseHardError函數(shù)的原始入口地址已被修改為本實(shí)施例的鉤子函數(shù)的入口地址,則調(diào)用NtRaiseHardError函數(shù)時,會跳至本實(shí)施例的鉤子函數(shù)的執(zhí)行,由此實(shí)現(xiàn)對NtRaiseHardError函數(shù)的監(jiān)視。為了實(shí)現(xiàn)對NtRaiseHardError函數(shù)的回調(diào),在將NtNtRaiseHardError函數(shù)的原始入口地址修改為本實(shí)施例中的鉤子函數(shù)的入口地址之前,需要對NtRaiseHardError函數(shù)的原始入口地址進(jìn)行保存。
步驟202、鉤子函數(shù)根據(jù)監(jiān)聽到的所述事件,獲取所述進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù)。
本實(shí)施例中,惡意進(jìn)程對NtRaiseHardError函數(shù)的調(diào)用,是通過向Windows操作系統(tǒng)發(fā)出調(diào)用NtRaiseHardError函數(shù)的消息,該消息會直接被鉤子函數(shù)截獲。鉤子函數(shù)截獲到該消息,即視為監(jiān)聽到NtRaiseHardError函數(shù)被進(jìn)程調(diào)用的事件,該消息中包括進(jìn)程向NtRaiseHardError函數(shù)傳送的錯誤報告選項(xiàng)參數(shù)。
步驟203、判斷錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù);若錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則執(zhí)行步驟204;若所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),則執(zhí)行步驟207。
本實(shí)施例中,對于被調(diào)用的NtRaiseHardError函數(shù)而言,當(dāng)錯誤報告選項(xiàng)參數(shù)是6時,表示產(chǎn)生錯誤并關(guān)閉系統(tǒng),執(zhí)行步驟204。
步驟204、獲取調(diào)用NtRaiseHardError函數(shù)的進(jìn)程路徑。
本實(shí)施例中,所述步驟204和上述方法實(shí)施例的步驟104類似,此處不再贅述。
步驟205、根據(jù)所述進(jìn)程路徑,判斷所述進(jìn)程是否是惡意進(jìn)程;若所述進(jìn)程是惡意進(jìn)程,則執(zhí)行步驟206;若所述進(jìn)程不是惡意進(jìn)程,則執(zhí)行步驟207。
本實(shí)施例中,判斷所述進(jìn)程是否是惡意進(jìn)程的方法和上述方法實(shí)施例的步驟105類似,此處不再贅述。
步驟206、鉤子函數(shù)向所述進(jìn)程返回拒絕消息或者拒絕調(diào)用NtRaiseHardError函數(shù),以拒絕產(chǎn)生關(guān)閉系統(tǒng)的系統(tǒng)錯誤。
步驟207、鉤子函數(shù)調(diào)用NtRaiseHardError函數(shù),以產(chǎn)生關(guān)閉系統(tǒng)的系統(tǒng)錯誤。
本實(shí)施例提供的防止系統(tǒng)被惡意關(guān)閉的方法,能夠攔截惡意軟件通過調(diào)用內(nèi)核函數(shù)的方式關(guān)閉操作系統(tǒng)。
下面采用一個具體的實(shí)施例,對圖1~圖2中任一個所示方法實(shí)施例的技術(shù)方案進(jìn)行詳細(xì)說明。
在用戶電腦環(huán)境中,存在一個惡意軟件A。在金山毒霸的防御驅(qū)動中Hook了產(chǎn)生錯誤的NtRaiseHardError函數(shù),當(dāng)惡意軟件A的進(jìn)程通知其驅(qū)動程序調(diào)用NtRaiseHardError函數(shù),產(chǎn)生一個錯誤,并且設(shè)置錯誤報告選項(xiàng)參數(shù)為6打算關(guān)閉系統(tǒng)時,防御驅(qū)動就會對此行為進(jìn)行攔截,并返回拒絕消息,使得惡意軟件不能關(guān)閉用戶系統(tǒng),從而更好地保護(hù)用戶系統(tǒng)環(huán)境不被破壞。
圖3為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖3所示,本實(shí)施例的裝置可以包括:監(jiān)聽模塊11、錯誤報告獲取模塊12、第一判斷模塊13、進(jìn)程獲取模塊14、第二判斷模塊15、拒絕模塊16。其中,監(jiān)聽模塊11,用于監(jiān)聽進(jìn)程對操作系統(tǒng)中產(chǎn)生系統(tǒng)錯誤函數(shù)進(jìn)行調(diào)用的事件;錯誤報告獲取模塊12,用于根據(jù)監(jiān)聽模塊11監(jiān)聽到的事件,獲取進(jìn)程傳送的錯誤報告選項(xiàng)參數(shù);第一判斷模塊13,用于判斷錯誤報告獲取模塊12獲取的錯誤報告選項(xiàng)參數(shù)是否為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù);進(jìn)程獲取模塊14,用于在第一判斷模塊13判斷出錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)時,獲取進(jìn)程路徑;第二判斷模塊15,用于根據(jù)進(jìn)程獲取模塊14獲取到的進(jìn)程路徑,判斷進(jìn)程是否是惡意進(jìn)程;拒絕模塊16,用于在第二判斷模塊15判斷出進(jìn)程是惡意進(jìn)程時,拒絕產(chǎn)生系統(tǒng)錯誤。
本實(shí)施例的裝置,可以用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
在本發(fā)明防止系統(tǒng)被惡意關(guān)閉的裝置實(shí)施例二中,當(dāng)防止系統(tǒng)被惡意關(guān)閉的裝置用于Windows操作系統(tǒng)中時,監(jiān)聽模塊11中預(yù)先設(shè)置有掛鉤操作系統(tǒng)內(nèi)核層的NtRaiseHardError函數(shù)的鉤子函數(shù),監(jiān)聽模塊11通過所述鉤子函數(shù)監(jiān)聽進(jìn)程對操作系統(tǒng)中NtRaiseHardError函數(shù)進(jìn)行調(diào)用的事件。第一判斷模塊13判斷所述錯誤報告獲取模塊獲取的所述錯誤報告選項(xiàng)參數(shù)是否為6,是則確定所述錯誤報告選項(xiàng)參數(shù)為表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù),否則確定所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)。拒絕模塊16通過所述鉤子函數(shù)向所述進(jìn)程返回拒絕消息或拒接調(diào)用NtRaiseHardError函數(shù),以拒絕產(chǎn)生系統(tǒng)錯誤;拒絕模塊16還用于在第二判斷模塊15判斷出所述進(jìn)程不是惡意進(jìn)程或所述第一判斷模塊13判斷出所述錯誤報告選項(xiàng)參數(shù)不是表示產(chǎn)生錯誤并關(guān)閉系統(tǒng)的參數(shù)時,調(diào)用NtRaiseHardError函數(shù)以產(chǎn)生系統(tǒng)錯誤。
本實(shí)施例的裝置,可以用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖4為本發(fā)明防止系統(tǒng)被惡意關(guān)閉的裝置實(shí)施例三的結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施例的裝置在圖3所示裝置結(jié)構(gòu)的基礎(chǔ)上,進(jìn)一步地,第二判斷模塊15可以包括:特征值計算子模塊151,用于根據(jù)預(yù)先設(shè)置的特征值算法,獲取進(jìn)程獲取模塊14獲取到的進(jìn)程路徑對應(yīng)文件的特征值;匹配子模塊152,用于判斷預(yù)先設(shè)置的特征庫中,是否記錄有特征值計算子模塊151獲取到的進(jìn)程路徑對應(yīng)文件的特征值,若預(yù)先設(shè)置的特征庫中記錄有進(jìn)程路徑對應(yīng)文件的特征值,則確定進(jìn)程為惡意進(jìn)程;若預(yù)先設(shè)置的特征庫中沒有記錄進(jìn)程路徑對應(yīng)文件的特征值,則確定進(jìn)程不是惡意進(jìn)程;其中,預(yù)先設(shè)置的特征庫中記錄有已知惡意進(jìn)程路徑對應(yīng)文件的特征值。
優(yōu)選地,在實(shí)施例三中,特征值計算子模塊151具體用于求取進(jìn)程獲取模塊14獲取到的進(jìn)程路徑的計算消息摘要算法(MD5)值或哈希(HASH)值作為進(jìn)程路徑對應(yīng)文件的特征值,或者從進(jìn)程獲取模塊14獲取到的進(jìn)程路徑中獲取文件版本號作為進(jìn)程路徑對應(yīng)文件的特征值。
優(yōu)選地,實(shí)施例三所示的防止系統(tǒng)被惡意關(guān)閉的裝置還可包括特征庫生成模塊(圖4中未示出),用于預(yù)先統(tǒng)計已知惡意進(jìn)程路徑,并根據(jù)預(yù)先設(shè)置的特征值算法,獲取所述已知惡意進(jìn)程路徑對應(yīng)文件的特征值并存儲在特征庫中;則匹配子模塊152判斷時是到特征庫生成模塊設(shè)置的特征庫中匹配是否有特征值計算子模塊151獲取到的進(jìn)程路徑對應(yīng)文件的特征值。
本實(shí)施例的裝置,可以用于執(zhí)行圖1或圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
本發(fā)明實(shí)施例還提供一種電子設(shè)備。圖5為本發(fā)明電子設(shè)備一個實(shí)施例的結(jié)構(gòu)示意圖,可以實(shí)現(xiàn)本發(fā)明圖1或圖2所示實(shí)施例的流程,如圖5所示,上述電子設(shè)備可以包括:殼體21、處理器22、存儲器23、電路板24和電源電路25,其中,電路板24安置在殼體21圍成的空間內(nèi)部,處理器22和存儲器23設(shè)置在電路板24上;電源電路25,用于為上述電子設(shè)備的各個電路或器件供電;存儲器23用于存儲可執(zhí)行程序代碼;處理器22通過讀取存儲器23中存儲的可執(zhí)行程序代碼來運(yùn)行與可執(zhí)行程序代碼對應(yīng)的程序,用于執(zhí)行前述任一實(shí)施例所述的防止系統(tǒng)被惡意關(guān)閉的方法。
該電子設(shè)備以多種形式存在,包括但不限于:
(1)移動通信設(shè)備:這類設(shè)備的特點(diǎn)是具備移動通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標(biāo)。這類終端包括:智能手機(jī)(例如iPhone)、多媒體手機(jī)、功能性手機(jī),以及低端手機(jī)等。
(2)超移動個人計算機(jī)設(shè)備:這類設(shè)備屬于個人計算機(jī)的范疇,有計算和處理功能,一般也具備移動上網(wǎng)特性。這類終端包括:PDA、MID和UMPC設(shè)備等,例如iPad。
(3)便攜式娛樂設(shè)備:這類設(shè)備可以顯示和播放多媒體內(nèi)容。該類設(shè)備包括:音頻、視頻播放模塊(例如iPod),掌上游戲機(jī),電子書,以及智能玩具和便攜式車載導(dǎo)航設(shè)備。
(4)服務(wù)器:提供計算服務(wù)的設(shè)備,服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,服務(wù)器和通用的計算機(jī)架構(gòu)類似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高。
(5)其他具有數(shù)據(jù)交互功能的電子設(shè)備。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機(jī)存儲記憶體(Random Access Memory,RAM)等。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。