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