1.一種攔截惡意程序關(guān)機(jī)的方法,其特征在于,包括:
通過(guò)鉤子函數(shù)監(jiān)聽(tīng)操作進(jìn)程發(fā)送的關(guān)機(jī)本地過(guò)程調(diào)用消息,其中,所述鉤子函數(shù)掛鉤發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù);
通過(guò)所述鉤子函數(shù)判斷所述關(guān)機(jī)本地過(guò)程調(diào)用消息是否符合預(yù)定的攔截條件;
若所述關(guān)機(jī)本地過(guò)程調(diào)用消息符合預(yù)定的攔截條件,且所述操作進(jìn)程的名稱包含在預(yù)設(shè)的惡意程序進(jìn)程列表中,則通過(guò)所述鉤子函數(shù)攔截所述關(guān)機(jī)本地過(guò)程調(diào)用消息。
2.根據(jù)權(quán)利要求1所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,在通過(guò)鉤子函數(shù)監(jiān)聽(tīng)操作進(jìn)程發(fā)送的關(guān)機(jī)本地過(guò)程調(diào)用消息之前,所述方法還包括:
查詢預(yù)設(shè)的系統(tǒng)服務(wù)描述符表,獲取發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址,并保存獲取的發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址;
創(chuàng)建鉤子函數(shù),獲取所述鉤子函數(shù)的函數(shù)地址;
在所述系統(tǒng)服務(wù)描述符表中,將發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址更新為所述鉤子函數(shù)的函數(shù)地址。
3.根據(jù)權(quán)利要求1所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,所述關(guān)機(jī)本地過(guò)程調(diào)用消息包括:目標(biāo)端口的句柄值和操作命令值;
所述預(yù)定的攔截條件包括:預(yù)定的關(guān)機(jī)端口句柄值及預(yù)定的關(guān)機(jī)操作命令值,其中,所述預(yù)定的關(guān)機(jī)端口句柄值為關(guān)機(jī)或重啟端口的句柄值,所述預(yù)定的關(guān)機(jī)操作命令值包括:關(guān)機(jī)和重啟;
所述通過(guò)所述鉤子函數(shù)判斷所述關(guān)機(jī)本地過(guò)程調(diào)用消息是否符合預(yù)定的攔截條件包括:
通過(guò)所述鉤子函數(shù)判斷所述關(guān)機(jī)本地過(guò)程調(diào)用消息中的目標(biāo)端口的句柄值是否與預(yù)定的關(guān)機(jī)端口句柄值相同;
若與預(yù)定的關(guān)機(jī)端口句柄值相同,則判斷所述關(guān)機(jī)本地過(guò)程調(diào)用消息中的操作命令值是否為關(guān)機(jī)或重啟;
若所述關(guān)機(jī)本地過(guò)程調(diào)用消息中的操作命令值為關(guān)機(jī)或重啟,則所述關(guān)機(jī)本地過(guò)程調(diào)用消息符合預(yù)定的攔截條件。
4.根據(jù)權(quán)利要求1所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,所述若所述關(guān)機(jī)本地過(guò)程調(diào)用消息符合預(yù)定的攔截條件,且所述操作進(jìn)程的名稱包含在預(yù)設(shè)的惡意程序進(jìn)程列表中,則通過(guò)所述鉤子函數(shù)攔截所述關(guān)機(jī)本地過(guò)程調(diào)用消息包括:
若所述關(guān)機(jī)本地過(guò)程調(diào)用消息符合預(yù)定的攔截條件,則通過(guò)所述鉤子函數(shù)獲取所述操作進(jìn)程的安裝路徑;
從獲取的所述操作進(jìn)程的安裝路徑中,提取所述操作進(jìn)程的名稱;
查詢預(yù)設(shè)的惡意程序進(jìn)程列表,若所述操作進(jìn)程的名稱包含在預(yù)設(shè)的惡意程序進(jìn)程列表中,則攔截所述關(guān)機(jī)本地過(guò)程調(diào)用消息。
5.根據(jù)權(quán)利要求4所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,所述攔截所述關(guān)機(jī)本地過(guò)程調(diào)用消息包括:
退出所述鉤子函數(shù),不將所述關(guān)機(jī)本地過(guò)程調(diào)用消息傳送給發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)。
6.根據(jù)權(quán)利要求1所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,所述方法還包括:
若所述關(guān)機(jī)本地過(guò)程調(diào)用消息不符合預(yù)定的攔截條件,或者,所述操作進(jìn)程的名稱沒(méi)有包含在預(yù)設(shè)的惡意程序進(jìn)程列表中,則通過(guò)所述鉤子函數(shù)將所述關(guān)機(jī)本地過(guò)程調(diào)用消息傳送給發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)。
7.根據(jù)權(quán)利要求6所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,所述通過(guò)所述鉤子函數(shù)將所述關(guān)機(jī)本地過(guò)程調(diào)用消息傳送給發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)之前,所述方法還包括:
在系統(tǒng)服務(wù)描述符表中,將發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址更新為已保存的發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的原始地址。
8.根據(jù)權(quán)利要求1-7任一項(xiàng)所述的攔截惡意程序關(guān)機(jī)的方法,其特征在于,所述惡意程序進(jìn)程列表是可擴(kuò)展的惡意程序進(jìn)程列表。
9.一種攔截惡意程序關(guān)機(jī)的裝置,其特征在于,包括:
監(jiān)聽(tīng)模塊,用于通過(guò)鉤子函數(shù)監(jiān)聽(tīng)操作進(jìn)程發(fā)送的關(guān)機(jī)本地過(guò)程調(diào)用消息,其中,所述鉤子函數(shù)掛鉤發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù);
判斷模塊,用于通過(guò)所述鉤子函數(shù)判斷所述關(guān)機(jī)本地過(guò)程調(diào)用消息是否符合預(yù)定的攔截條件;
攔截模塊,用于若所述關(guān)機(jī)本地過(guò)程調(diào)用消息符合預(yù)定的攔截條件,且所述操作進(jìn)程的名稱包含在預(yù)設(shè)的惡意程序進(jìn)程列表中,則通過(guò)所述鉤子函數(shù)攔截所述關(guān)機(jī)本地過(guò)程調(diào)用消息。
10.根據(jù)權(quán)利要求9所述的攔截惡意程序關(guān)機(jī)的裝置,其特征在于,所述裝置還包括:掛鉤模塊;所述掛鉤模塊包括:
第一獲取單元,用于查詢預(yù)設(shè)的系統(tǒng)服務(wù)描述符表,獲取發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址,并保存獲取的發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址;
第二獲取單元,用于創(chuàng)建鉤子函數(shù),獲取所述鉤子函數(shù)的函數(shù)地址;
地址更新單元,用于在所述系統(tǒng)服務(wù)描述符表中,將發(fā)送所述關(guān)機(jī)本地過(guò)程調(diào)用消息的內(nèi)核函數(shù)的當(dāng)前地址更新為所述鉤子函數(shù)的函數(shù)地址。