欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種進(jìn)程處理方法及裝置的制造方法

文檔序號(hào):10613168閱讀:189來(lái)源:國(guó)知局
一種進(jìn)程處理方法及裝置的制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供的一種進(jìn)程處理方法及裝置,可以監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);若被調(diào)用,判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;若為是,拒絕結(jié)束所述目標(biāo)進(jìn)程。由于是通過(guò)判斷調(diào)用第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,確定是否拒絕結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明實(shí)施例提供的進(jìn)程處理方法及裝置,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全。
【專(zhuān)利說(shuō)明】
一種進(jìn)程處理方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別是涉及一種進(jìn)程處理方法及裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)發(fā)展,病毒、木馬等惡意程序?qū)映霾桓F,這些惡意程序?yàn)榱朔乐棺陨肀唤K端中的殺毒軟件等安全軟件查殺、攔截,它們會(huì)首先將終端中正在運(yùn)行的安全軟件的進(jìn)程強(qiáng)制結(jié)束,從而保護(hù)自身安全。這會(huì)使得終端處于裸奔狀態(tài),嚴(yán)重地影響了終端的使用安全。
[0003]為了提高終端的安全性能,首要任務(wù)是保證安全軟件自身的存活?,F(xiàn)有技術(shù)中,一般是通過(guò)為進(jìn)程句柄獲取函數(shù)(例如NtOpenProcess)或者進(jìn)程結(jié)束函數(shù)(例如NtTerminateProcess)等內(nèi)核函數(shù)設(shè)置掛鉤函數(shù)的方式,攔截惡意程序結(jié)束安全軟件的進(jìn)程,從而保證安全軟件進(jìn)程不被被惡意程序結(jié)束。
[0004]但是,當(dāng)惡意程序通過(guò)任務(wù)管理器中的“結(jié)束任務(wù)”的方式結(jié)束安全軟件進(jìn)程時(shí),操作系統(tǒng)是不會(huì)調(diào)用上述內(nèi)核函數(shù)的,所以應(yīng)用上述方式也就無(wú)法實(shí)現(xiàn)對(duì)結(jié)束安全軟件進(jìn)程的攔截。
[0005]因此,亟需提出一種能夠攔截利用“結(jié)束任務(wù)”的方式結(jié)束進(jìn)程的進(jìn)程處理方法。

【發(fā)明內(nèi)容】

[0006]本發(fā)明實(shí)施例的目的在于提供一種進(jìn)程處理方法及裝置,以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)目標(biāo)進(jìn)程不被惡意結(jié)束,保護(hù)了目標(biāo)進(jìn)程的安全。
[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例公開(kāi)了一種進(jìn)程處理方法,所述方法包括:
[0008]監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);
[0009]若被調(diào)用,判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;
[0010]若為是,拒絕結(jié)束所述目標(biāo)進(jìn)程。
[0011]優(yōu)選的,所述判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,包括:
[0012]通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。
[0013]優(yōu)選的,所述通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,包括:
[0014]根據(jù)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù)中的發(fā)送端口句柄參數(shù),獲得所述第一目標(biāo)函數(shù)發(fā)送消息的發(fā)送端口名稱(chēng);
[0015]根據(jù)所述第一鉤子函數(shù)中的窗口句柄參數(shù),獲得待操作進(jìn)程的進(jìn)程路徑;
[0016]判斷所述發(fā)送端口名稱(chēng)、所述進(jìn)程路徑和所述第一鉤子函數(shù)的操作碼參數(shù)是否滿(mǎn)足以下條件:所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑且所述操作碼參數(shù)為預(yù)設(shè)的結(jié)束進(jìn)程操作碼;
[0017]若為是,則判定調(diào)用所述第一目標(biāo)函數(shù)是用于結(jié)束所述目標(biāo)進(jìn)程;
[0018]否則,判定調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程。
[0019]優(yōu)選的,在所述判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程前,所述方法還包括:
[0020]保存所述第一目標(biāo)函數(shù)的函數(shù)地址;
[0021 ]在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,通過(guò)所述第一鉤子函數(shù),根據(jù)所述函數(shù)地址,響應(yīng)對(duì)所述第一目標(biāo)函數(shù)的調(diào)用。
[0022]優(yōu)選的,所述方法還包括:
[0023]監(jiān)測(cè)第二目標(biāo)函數(shù)是否被調(diào)用,其中,所述第二目標(biāo)函數(shù)為進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù);
[0024]若被調(diào)用,判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程;
[0025]若為是,執(zhí)行所述拒絕結(jié)束所述目標(biāo)進(jìn)程的步驟。
[0026]為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還公開(kāi)了一種進(jìn)程處理裝置,所述裝置包括:第一監(jiān)測(cè)模塊、第一判斷模塊和拒絕結(jié)束模塊,
[0027]所述第一監(jiān)測(cè)模塊,用于監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);
[0028]所述第一判斷模塊,用于在所述第一監(jiān)測(cè)模塊監(jiān)測(cè)到所述第一目標(biāo)函數(shù)被調(diào)用時(shí),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;
[0029]所述拒絕結(jié)束模塊,用于在所述第一判斷模塊獲得的判斷結(jié)果為是時(shí),拒絕結(jié)束所述目標(biāo)進(jìn)程。
[0030]優(yōu)選的,所述第一判斷模塊,具體用于通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。
[0031]優(yōu)選的,所述第一判斷模塊包括:發(fā)送端口獲取子模塊、進(jìn)程路徑獲取子模塊、第一判斷子模塊、第一判定結(jié)果確定子模塊和第二判定結(jié)果確定子模塊,
[0032]所述發(fā)送端口獲取子模塊,用于根據(jù)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù)的發(fā)送端口句柄參數(shù),獲得所述第一目標(biāo)函數(shù)發(fā)送消息的發(fā)送端口名稱(chēng);
[0033]所述進(jìn)程路徑獲取子模塊,用于根據(jù)所述第一鉤子函數(shù)的窗口句柄參數(shù),獲得待操作進(jìn)程的進(jìn)程路徑;
[0034]所述第一判斷子模塊,用于判斷所述發(fā)送端口名稱(chēng)、所述進(jìn)程路徑和所述第一鉤子函數(shù)的操作碼參數(shù)是否滿(mǎn)足以下條件:所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑且所述操作碼參數(shù)為預(yù)設(shè)的結(jié)束進(jìn)程操作碼;
[0035]所述第一判定結(jié)果確定子模塊,用于在所述第一判斷子模塊獲得的判斷結(jié)果為是時(shí),判定調(diào)用所述第一目標(biāo)函數(shù)是用于結(jié)束所述目標(biāo)進(jìn)程;
[0036]所述第二判定結(jié)果確定子模塊,用于在所述第一判斷子模塊獲得的判斷結(jié)果為否時(shí),判定調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程。
[0037]優(yōu)選的,所述裝置還包括:保存模塊和第一響應(yīng)模塊
[0038]所述保存模塊,用于在所述第一判斷模塊判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程前,保存所述第一目標(biāo)函數(shù)的函數(shù)地址;
[0039]所述第一響應(yīng)模塊,用于在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,通述第一鉤子函數(shù),根據(jù)所述函數(shù)地址,響應(yīng)對(duì)所述第一目標(biāo)函數(shù)的調(diào)用。
[0040]優(yōu)選的,所述裝置還包括:第二監(jiān)測(cè)模塊、第二判斷模塊和觸發(fā)模塊;
[0041 ]所述第二監(jiān)測(cè)模塊,用于監(jiān)測(cè)第二目標(biāo)函數(shù)是否被調(diào)用,其中,所述第二目標(biāo)函數(shù)為進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù);
[0042]所述第二判斷模塊,用于在所述第二監(jiān)測(cè)模塊監(jiān)測(cè)到所述二目標(biāo)函數(shù)被調(diào)用時(shí),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程;
[0043]所述觸發(fā)模塊,用于在所述第二判斷模塊獲得的判斷結(jié)果為是時(shí),觸發(fā)所述拒絕結(jié)束模塊。
[0044]本發(fā)明實(shí)施例提供的一種進(jìn)程處理方法及裝置,可以監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);若被調(diào)用,判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;若為是,拒絕結(jié)束所述目標(biāo)進(jìn)程。由于是通過(guò)判斷調(diào)用第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,確定是否拒絕結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明實(shí)施例提供的進(jìn)程處理方法及裝置,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全。當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
【附圖說(shuō)明】
[0045]為了更清楚地說(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ù)這些附圖獲得其他的附圖。
[0046]圖1為本發(fā)明實(shí)施例提供的一種進(jìn)程處理方法的流程圖;
[0047]圖2為圖1所示的實(shí)施例中的步驟S102的具體流程圖;
[0048]圖3為本發(fā)明實(shí)施例提供的另一種進(jìn)程處理方法的流程圖;
[0049]圖4為本發(fā)明實(shí)施例提供的一種進(jìn)程處理裝置的結(jié)構(gòu)圖;
[0050]圖5為圖4所示的實(shí)施例中的模塊402的具體結(jié)構(gòu)圖;
[0051 ]圖6為本發(fā)明實(shí)施例提供的另一種進(jìn)程處理裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0052]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0053]本發(fā)明實(shí)施例提供了一種進(jìn)程處理方法及裝置,應(yīng)用于終端。下面分別進(jìn)行說(shuō)明,首先對(duì)一種進(jìn)程處理方法進(jìn)行說(shuō)明。
[0054]如圖1所示,本發(fā)明實(shí)施例提供了一種進(jìn)程處理方法,包括如下步驟:
[0055]SlOl、監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);若被調(diào)用,執(zhí)行步驟S102;
[0056]其中,LPC是本地過(guò)程調(diào)用(Local Procedure Call)的簡(jiǎn)稱(chēng)。
[0057]由于用戶(hù)在點(diǎn)擊系統(tǒng)的任務(wù)管理器(taskmgr)中的“結(jié)束任務(wù)”按鈕時(shí),操作系統(tǒng)會(huì)調(diào)用使用LPC機(jī)制向任務(wù)管理子系統(tǒng)發(fā)送消息的第一目標(biāo)函數(shù),讓任務(wù)管理子系統(tǒng)結(jié)束待操作的進(jìn)程。例如,當(dāng)用戶(hù)點(diǎn)擊任務(wù)管理器(taskmgr)中的“結(jié)束任務(wù)”按鈕時(shí),操作系統(tǒng)會(huì)使用 she 1132.dll 的EedTask函數(shù)調(diào)用內(nèi)核層(ringO)的函數(shù)NtRequestWaitRep IyPort,函數(shù)NtRequestWaitReplyPort就會(huì)使用LPC機(jī)制向任務(wù)管理子系統(tǒng)發(fā)送消息,任務(wù)管理子系統(tǒng)會(huì)調(diào)用NtTerminateProcess等非常規(guī)內(nèi)核函數(shù)結(jié)束待操作進(jìn)程。
[0058]因此,可以通過(guò)對(duì)第一目標(biāo)函數(shù)是否被調(diào)用進(jìn)行監(jiān)測(cè),作為防止目標(biāo)進(jìn)程被惡意程序通過(guò)“結(jié)束任務(wù)”的方式結(jié)束的第一個(gè)步驟。
[0059]具體的,第一目標(biāo)函數(shù)可以為函數(shù)NtRequestWaitReplyPort。
[0060]S102、判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;若為是,執(zhí)行步驟S103,否則,響應(yīng)對(duì)第一目標(biāo)函數(shù)的調(diào)用;
[0061]其中,目標(biāo)進(jìn)程可以是用戶(hù)想要保護(hù)的病毒查殺軟件進(jìn)程等。
[0062]可以通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。
[0063]將第一目標(biāo)函數(shù)與第一鉤子函數(shù)掛鉤的過(guò)程為:查找系統(tǒng)服務(wù)描述符表(SystemServices Descriptor Table,SSDT),找到第一目標(biāo)函數(shù),保存第一目標(biāo)函數(shù)的函數(shù)地址;定義一個(gè)第一鉤子函數(shù),利用第一鉤子函數(shù)替換SSDT表中的第一目標(biāo)函數(shù)。
[0064]S103、拒絕結(jié)束所述目標(biāo)進(jìn)程。
[0065]由于是通過(guò)判斷調(diào)用第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,確定是否拒絕結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明圖1所示的實(shí)施例提供的進(jìn)程處理方法,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全,當(dāng)目標(biāo)進(jìn)程為終端中的安全軟件進(jìn)程時(shí),還可以提高系統(tǒng)的安全性。
[0066]如圖2所示,圖1所示的實(shí)施例中的步驟S102中所述的在將第一鉤子函數(shù)與第一目標(biāo)函數(shù)掛鉤后,所述通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,包括:
[0067]S201、根據(jù)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù)中的發(fā)送端口句柄參數(shù),獲得所述第一目標(biāo)函數(shù)發(fā)送消息的發(fā)送端口名稱(chēng);
[0068]由于在正常情況下,應(yīng)用程序通過(guò)調(diào)用函數(shù)的方式結(jié)束進(jìn)程時(shí),所調(diào)用的函數(shù)通常會(huì)通過(guò)特定的端口(例如ApiPort)向任務(wù)管理子系統(tǒng)發(fā)送消息。
[0069]因此,可以在第一鉤子函數(shù)中設(shè)置一個(gè)包含發(fā)送端口句柄的參數(shù),以使操作系統(tǒng)通過(guò)調(diào)用相關(guān)的內(nèi)核函數(shù)獲取第一目標(biāo)函數(shù)中的發(fā)送端口的名稱(chēng),然后判斷該發(fā)送端口名稱(chēng)是否為用于發(fā)送結(jié)束進(jìn)程消息的特定端口,從而初步確定調(diào)用第一目標(biāo)函數(shù)的目的是否是用于結(jié)束待操作進(jìn)程;
[0070]例如,在第一鉤子函數(shù)中,第一個(gè)參數(shù)可以為發(fā)送端口句柄,通過(guò)內(nèi)核函數(shù)ObReferenceObjectByHandle,可以將發(fā)送端口句柄轉(zhuǎn)換為發(fā)送端口的結(jié)構(gòu)指針;通過(guò)內(nèi)核函數(shù)ObRef erenceOb jectByName,可以獲取發(fā)送端口的名稱(chēng);將獲取的發(fā)送端口名稱(chēng)與名為u\\Sess1ns\\%d\\Windows\\ApiPort”的預(yù)設(shè)端口進(jìn)行匹配,其中d”是變量值,是客戶(hù)端當(dāng)前用戶(hù)會(huì)話(huà)的ID(identificat1n),可以通過(guò)調(diào)用內(nèi)核函數(shù)PsGetCurrentProcessSess1nld獲得當(dāng)前用戶(hù)會(huì)話(huà)ID。當(dāng)二者匹配上時(shí),說(shuō)明發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng),第一目標(biāo)函數(shù)是往名為“ApiPort”的預(yù)設(shè)端口發(fā)送消息;發(fā)送的消息極有可能是用于結(jié)束待操作進(jìn)程的消息。
[0071]S202、根據(jù)所述第一鉤子函數(shù)中的窗口句柄參數(shù),獲得待操作進(jìn)程的進(jìn)程路徑;
[0072]可以理解的是,要想保護(hù)目標(biāo)進(jìn)程不被結(jié)束,僅僅知道調(diào)用第一目標(biāo)函數(shù)的目的是用于結(jié)束待操作進(jìn)程是不夠的,還應(yīng)知道待操作進(jìn)程是否為目標(biāo)進(jìn)程,否則可能會(huì)影響用戶(hù)對(duì)其他進(jìn)程的操作。
[0073]通??梢酝ㄟ^(guò)判斷待操作進(jìn)程的進(jìn)程路徑是否為目標(biāo)進(jìn)程的進(jìn)程路徑來(lái)判斷待操作進(jìn)程是否為目標(biāo)進(jìn)程。
[0074]其中,待操作進(jìn)程的進(jìn)程路徑可以通過(guò)第一鉤子函數(shù)中的待操作進(jìn)程的窗口句柄參數(shù)獲得,目標(biāo)進(jìn)程的進(jìn)程路徑可以從注冊(cè)表中讀取。
[0075]具體的,可以將第一鉤子函數(shù)中的第二個(gè)參數(shù)設(shè)置為向任務(wù)管理子系統(tǒng)發(fā)送的消息的具體數(shù)據(jù),第二個(gè)參數(shù)可以為PP0RT_MESSAGE結(jié)構(gòu)類(lèi)型,將第二個(gè)參數(shù)轉(zhuǎn)換為PCSRSS_MESSAGE結(jié)構(gòu)指針后,該結(jié)構(gòu)指針中保存有待操作進(jìn)程的窗口句柄的參數(shù);
[0076]可以根據(jù)PCSRSS_MESSAGE結(jié)構(gòu)指針中保存的待操作進(jìn)程的窗口句柄參數(shù)獲得待操作進(jìn)程的窗口句柄;然后調(diào)用進(jìn)程ID查詢(xún)內(nèi)核函數(shù)查詢(xún)待操作進(jìn)程的ID;最后調(diào)用進(jìn)程路徑獲取內(nèi)核函數(shù)并根據(jù)待操作進(jìn)程的ID,獲取待操作進(jìn)程的進(jìn)程路徑。
[0077]例如,當(dāng)?shù)谝荒繕?biāo)函數(shù)為函數(shù)NtRequestWaitReplyPort時(shí),第一鉤子函數(shù)可以為NewNtRequestWai tReplyPort,其PCSRSS_MESSAGE結(jié)構(gòu)指針中的第二個(gè)參數(shù)可以為hEndTaskWnd,待操作進(jìn)程的窗口句柄參數(shù)就保存在hEndTaskWnd中;可以調(diào)用內(nèi)核函數(shù)ZwUserQueryWindow查詢(xún)待操作進(jìn)程的進(jìn)程ID,然后調(diào)用ZwQuery Informat1nProcess等內(nèi)核函數(shù)獲取待操作進(jìn)程的進(jìn)程路徑。
[0078]S203、判斷所述發(fā)送端口名稱(chēng)、所述進(jìn)程路徑和所述第一鉤子函數(shù)的操作碼參數(shù)是否滿(mǎn)足預(yù)設(shè)條件;若為是,執(zhí)行步驟S204,否則,執(zhí)行步驟S205;
[0079]其中,預(yù)設(shè)條件包括:所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑且所述操作碼參數(shù)為預(yù)設(shè)的結(jié)束進(jìn)程操作碼。
[0080]其中,判斷發(fā)送端口名稱(chēng)是否為預(yù)設(shè)的端口名稱(chēng)的過(guò)程與步驟S201中所述的一致,此處不再贅述。
[0081 ]其中,判斷進(jìn)程路徑是否為目標(biāo)進(jìn)程路徑的過(guò)程為:預(yù)先讀取終端中的應(yīng)用程序注冊(cè)表獲取目標(biāo)進(jìn)程路徑的列表,判斷步驟S202中獲得的待操作進(jìn)程的進(jìn)程路徑是否為預(yù)先獲得的目標(biāo)進(jìn)程路徑列表中的進(jìn)程路徑,如果是,說(shuō)明待操作進(jìn)程的進(jìn)程路徑是目標(biāo)進(jìn)程路徑;否則,說(shuō)明待操作進(jìn)程的進(jìn)程路徑不是目標(biāo)進(jìn)程路徑。
[0082]可以理解的是,在判定所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑后,還需要判斷第一鉤子函數(shù)中保存的操作碼參數(shù)是否為預(yù)設(shè)的結(jié)束進(jìn)程操作碼,以確認(rèn)調(diào)用第一目標(biāo)函數(shù)的目的就是結(jié)束目標(biāo)進(jìn)程;在上述三個(gè)條件同時(shí)滿(mǎn)足時(shí),說(shuō)明調(diào)用第一目標(biāo)函數(shù)的目的就是結(jié)束目標(biāo)進(jìn)程,調(diào)用第一目標(biāo)函數(shù)的執(zhí)行主體很可能是惡意程序,需要拒絕響應(yīng)第一目標(biāo)函數(shù),從而拒絕通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程。
[0083]其中,預(yù)設(shè)的結(jié)束進(jìn)程的操作碼包括:
[0084]EXIT_WIND0W_P0RT_ID,是退出進(jìn)程操作碼;
[0085]END_TASK_PORT_ID,是結(jié)束任務(wù)操作碼;
[0086]PROCESS_SHUTDOWN_PARAMETERS,是進(jìn)程關(guān)閉的操作碼。
[0087]這三個(gè)操作碼都是和結(jié)束進(jìn)程相關(guān)的,只要第一鉤子函數(shù)中的操作碼參數(shù)等于這三操作碼的其中一個(gè),就可以認(rèn)為第一鉤子函數(shù)中保存的操作碼參數(shù)是預(yù)設(shè)的結(jié)束進(jìn)程操作碼。
[0088]具體的,第一鉤子函數(shù)中的操作碼參數(shù)也可以保存在PCSRSS_MESSAGE結(jié)構(gòu)指針中。
[0089]S204、判定調(diào)用所述第一目標(biāo)函數(shù)是用于結(jié)束所述目標(biāo)進(jìn)程;
[0090]S205、判定調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程。
[0091]在上述預(yù)設(shè)條件中的任一條件不滿(mǎn)足時(shí),說(shuō)明調(diào)用第一目標(biāo)函數(shù)的目的不是結(jié)束目標(biāo)進(jìn)程,需要正常響應(yīng)對(duì)第一目標(biāo)函數(shù)的調(diào)用。
[0092]需要注意的是,步驟S201和步驟S202的執(zhí)行順序并不影響實(shí)現(xiàn)本發(fā)明的發(fā)明目的,因此,本發(fā)明對(duì)步驟S201和步驟S202執(zhí)行順序不做限定。
[0093]由于具體可以通過(guò)與第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),防止惡意程序通過(guò)調(diào)用第一目標(biāo)函數(shù)的方式結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明實(shí)施例提供的進(jìn)程處理方法,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全。
[0094]優(yōu)選的,在圖1所示的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例還提供了另一種進(jìn)程處理方法,在所述判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程前,該方法還可以包括:
[0095]步驟一、保存所述第一目標(biāo)函數(shù)的函數(shù)地址;
[0096]具體的,可以在將第一目標(biāo)函數(shù)與第一鉤子函數(shù)掛鉤的過(guò)程中,保存第一目標(biāo)函數(shù)的地址;例如,在圖1所示的實(shí)施例中的步驟S102中的掛鉤過(guò)程中,當(dāng)在SSDT表中找到第一目標(biāo)函數(shù)時(shí),保存第一目標(biāo)函數(shù)的地址。
[0097]步驟二、在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,通過(guò)所述第一鉤子函數(shù),根據(jù)所述函數(shù)地址,響應(yīng)所述第一目標(biāo)函數(shù)。
[0098]具體的,可以在第一鉤子函數(shù)中設(shè)置一個(gè)指向第一目標(biāo)函數(shù)的地址的指針,在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,使系統(tǒng)調(diào)用第一鉤子函數(shù)中的指針指向第一目標(biāo)函數(shù),即響應(yīng)系統(tǒng)對(duì)第一目標(biāo)函數(shù)的調(diào)用。
[0099]這樣,當(dāng)系統(tǒng)調(diào)用第一目標(biāo)函數(shù)不是用于結(jié)束目標(biāo)進(jìn)程時(shí),可以實(shí)現(xiàn)系統(tǒng)對(duì)第一目標(biāo)函數(shù)的正常調(diào)用,保證用戶(hù)對(duì)其他進(jìn)程的正常操作。
[0100]如圖3所示,在圖1所示的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例還提供了另一種進(jìn)程處理方法,該方法還包括:
[0101]S301、監(jiān)測(cè)第二目標(biāo)函數(shù)是否被調(diào)用,其中,所述第二目標(biāo)函數(shù)為進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù);若被調(diào)用,執(zhí)行步驟S302;
[0102]由于用戶(hù)在點(diǎn)擊系統(tǒng)的任務(wù)管理器(taskmgr)中的“結(jié)束進(jìn)程”按鈕時(shí),操作系統(tǒng)會(huì)調(diào)用進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù)這樣的第二目標(biāo)函數(shù),讓任務(wù)管理子系統(tǒng)結(jié)束待操作的進(jìn)程。例如,當(dāng)用戶(hù)點(diǎn)擊任務(wù)管理器(taskmgr)中的“結(jié)束任務(wù)”按鈕時(shí),操作系統(tǒng)會(huì)先調(diào)用進(jìn)程句柄獲取函數(shù)NtOpenProcess,然后調(diào)用進(jìn)程結(jié)束函數(shù)NtTerminateProcess等非常規(guī)內(nèi)核函數(shù)結(jié)束待操作進(jìn)程。
[0103]因此,可以通過(guò)對(duì)第二目標(biāo)函數(shù)是否被調(diào)用進(jìn)行監(jiān)測(cè)作為防止目標(biāo)進(jìn)程被惡意程序程序通過(guò)“結(jié)束進(jìn)程”的方式結(jié)束結(jié)束的第一個(gè)步驟。
[0104]S302、判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程;如果是,執(zhí)行步驟S103 ;否則,執(zhí)行步驟S303 ;
[0105]可以通過(guò)與所述第二目標(biāo)函數(shù)掛鉤的第二鉤子函數(shù),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。
[0106]將第二目標(biāo)函數(shù)與第二鉤子函數(shù)掛鉤的過(guò)程為:查找系SSDT表,找到第二目標(biāo)函數(shù),保存第二目標(biāo)函數(shù)的函數(shù)地址;定義一個(gè)第二鉤子函數(shù),利用第二鉤子函數(shù)替換SSDT表中的第二目標(biāo)函數(shù)。
[0107]需要說(shuō)明的是,利用與第二目標(biāo)函數(shù)掛鉤的第二鉤子函數(shù),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程的具體過(guò)程屬于現(xiàn)有技術(shù),此處不再贅述。
[0108]S303、響應(yīng)對(duì)第二目標(biāo)函數(shù)的調(diào)用。
[0109]應(yīng)用本發(fā)明圖3所示的實(shí)施例,可以同時(shí)防止惡意程序通過(guò)“結(jié)束任務(wù)”的方式或“結(jié)束進(jìn)程”的方式結(jié)束目標(biāo)進(jìn)程,當(dāng)目標(biāo)進(jìn)程為終端中的安全軟件進(jìn)程時(shí),可以全面提高系統(tǒng)的安全性。
[0110]本發(fā)明實(shí)施例提供的一種進(jìn)程處理方法,可以監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);若被調(diào)用,判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;若為是,拒絕結(jié)束所述目標(biāo)進(jìn)程。由于是通過(guò)判斷調(diào)用第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,確定是否拒絕結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明實(shí)施例提供的進(jìn)程處理方法,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全。
[0111]相應(yīng)于圖1所示的方法實(shí)施例,如圖4所示,本發(fā)明還提供了一種進(jìn)程處理裝置,該裝置包括:第一監(jiān)測(cè)模塊401、第一判斷模塊402和拒絕結(jié)束模塊403,
[0112]第一監(jiān)測(cè)模塊401,用于監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);
[0113]其中,LPC是本地過(guò)程調(diào)用(Local Procedure Call)的簡(jiǎn)稱(chēng)。
[0114]由于用戶(hù)在點(diǎn)擊系統(tǒng)的任務(wù)管理器(taskmgr)中的“結(jié)束任務(wù)”按鈕時(shí),操作系統(tǒng)會(huì)調(diào)用使用LPC機(jī)制向任務(wù)管理子系統(tǒng)發(fā)送消息的第一目標(biāo)函數(shù),讓任務(wù)管理子系統(tǒng)結(jié)束待操作的進(jìn)程。例如,當(dāng)用戶(hù)點(diǎn)擊任務(wù)管理器(taskmgr)中的“結(jié)束任務(wù)”按鈕時(shí),操作系統(tǒng)會(huì)使用 she 1132.dll 的EedTask函數(shù)調(diào)用內(nèi)核層(ringO)的函數(shù)NtRequestWaitRep IyPort,函數(shù)NtRequestWaitReplyPort就會(huì)使用LPC機(jī)制向任務(wù)管理子系統(tǒng)發(fā)送消息,任務(wù)管理子系統(tǒng)會(huì)調(diào)用NtTerminateProcess等非常規(guī)內(nèi)核函數(shù)結(jié)束待操作進(jìn)程。
[0115]因此,可以通過(guò)第一監(jiān)測(cè)模塊401對(duì)第一目標(biāo)函數(shù)是否被調(diào)用進(jìn)行監(jiān)測(cè),作為防止目標(biāo)進(jìn)程被惡意程序程序通過(guò)“結(jié)束進(jìn)程”的方式結(jié)束結(jié)束的首要任務(wù)。
[0116]具體的,第一目標(biāo)函數(shù)可以為函數(shù)NtRequestWaitReplyPort。
[0117]第一判斷模塊402,用于在所述第一監(jiān)測(cè)模塊監(jiān)測(cè)到所述第一目標(biāo)函數(shù)被調(diào)用時(shí),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;
[0118]其中,目標(biāo)進(jìn)程可以是用戶(hù)想要保護(hù)的病毒查殺軟件進(jìn)程等。
[0119]具體的,第一判斷模塊402,用于通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。
[0120]其中,將第一目標(biāo)函數(shù)與第一鉤子函數(shù)掛鉤的過(guò)程為:查找SSDT表,找到第一目標(biāo)函數(shù);定義一個(gè)第一鉤子函數(shù),保存第一目標(biāo)函數(shù)的函數(shù)地址,利用第一鉤子函數(shù)替換SSDT表中的第一目標(biāo)函數(shù)。
[0121 ]拒絕結(jié)束模塊403,用于在所述第一判斷模塊獲得的判斷結(jié)果為是時(shí),拒絕結(jié)束所述目標(biāo)進(jìn)程。
[0122]由于是通過(guò)判斷調(diào)用第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,確定是否拒絕結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明圖4所示的實(shí)施例提供的進(jìn)程處理方法,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全,當(dāng)目標(biāo)進(jìn)程為終端中的安全軟件進(jìn)程時(shí),還可以提高系統(tǒng)的安全性。。
[0123]如圖5所示,圖4所示的實(shí)施例中的第一判斷模塊402具體包括:發(fā)送端口獲取子模塊501、進(jìn)程路徑獲取子模塊502、第一判斷子模塊503、第一判定結(jié)果確定子模塊504和第二判定結(jié)果確定子模塊505,
[0124]發(fā)送端口獲取子模塊501,用于根據(jù)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù)的發(fā)送端口句柄參數(shù),獲得所述第一目標(biāo)函數(shù)發(fā)送消息的發(fā)送端口名稱(chēng);
[0125]由于在正常情況下,用戶(hù)或其他應(yīng)用程序通過(guò)調(diào)用第一目標(biāo)函數(shù)的方式結(jié)束進(jìn)程時(shí),第一目標(biāo)函數(shù)會(huì)通過(guò)特定的端口(例如ApiPort)向任務(wù)管理子系統(tǒng)發(fā)送消息。
[0126]因此,可以在第一鉤子函數(shù)中設(shè)置一個(gè)包含發(fā)送端口句柄的參數(shù),以使操作系統(tǒng)通過(guò)調(diào)用相關(guān)的內(nèi)核函數(shù)獲取第一目標(biāo)函數(shù)中的發(fā)送端口的名稱(chēng),然后判斷該發(fā)送端口名稱(chēng)是否為用于發(fā)送結(jié)束進(jìn)程消息的特定端口,從而初步確定調(diào)用第一目標(biāo)函數(shù)的目的是否是用于結(jié)束待操作進(jìn)程;
[0127]例如,在第一鉤子函數(shù)中,第一個(gè)參數(shù)可以為發(fā)送端口句柄,通過(guò)內(nèi)核函數(shù)ObReferenceObjectByHandle,可以將發(fā)送端口句柄轉(zhuǎn)換為發(fā)送端口的結(jié)構(gòu)指針;通過(guò)內(nèi)核函數(shù)ObRef erenceOb jectByName,可以獲取發(fā)送端口的名稱(chēng);將獲取的發(fā)送端口名稱(chēng)與名為u\\Sess1ns\\%d\\Windows\\ApiPort”的預(yù)設(shè)端口進(jìn)行匹配,其中d”是變量值,是客戶(hù)端當(dāng)前用戶(hù)會(huì)話(huà)的ID(identificat1n),可以通過(guò)調(diào)用內(nèi)核函數(shù)PsGetCurrentProcessSess1nld獲得當(dāng)前用戶(hù)會(huì)話(huà)ID。當(dāng)二者匹配上時(shí),說(shuō)明發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng),第一目標(biāo)函數(shù)是往名為“ApiPort”的預(yù)設(shè)端口發(fā)送消息;發(fā)送的消息極有可能是用于結(jié)束待操作進(jìn)程的消息。
[0128]進(jìn)程路徑獲取子模塊502,用于根據(jù)所述第一鉤子函數(shù)的窗口句柄參數(shù),獲得待操作進(jìn)程的進(jìn)程路徑;
[0129]可以理解的是,要想保護(hù)目標(biāo)進(jìn)程不被結(jié)束,僅僅知道調(diào)用第一目標(biāo)函數(shù)的目的是用于結(jié)束待操作進(jìn)程是不夠的,還應(yīng)知道待操作進(jìn)程是否為目標(biāo)進(jìn)程,否則可能會(huì)影響用戶(hù)對(duì)其他進(jìn)程的操作。
[0130]通??梢酝ㄟ^(guò)判斷待操作進(jìn)程的進(jìn)程路徑是否為目標(biāo)進(jìn)程的進(jìn)程路徑來(lái)判斷待操作進(jìn)程是否為目標(biāo)進(jìn)程。
[0131]其中,待操作進(jìn)程的進(jìn)程路徑可以通過(guò)第一鉤子函數(shù)中的待操作進(jìn)程的窗口句柄參數(shù)獲得,目標(biāo)進(jìn)程的進(jìn)程路徑可以從注冊(cè)表中讀取。
[0132]具體的,可以將第一鉤子函數(shù)中的第二個(gè)參數(shù)設(shè)置為向任務(wù)管理子系統(tǒng)發(fā)送的消息的具體數(shù)據(jù),第二個(gè)參數(shù)可以為PP0RT_MESSAGE結(jié)構(gòu)類(lèi)型,將第二個(gè)參數(shù)轉(zhuǎn)換為PCSRSS_MESSAGE結(jié)構(gòu)指針后,該結(jié)構(gòu)指針中保存有待操作進(jìn)程的窗口句柄的參數(shù);
[0133]可以根據(jù)PCSRSS_MESSAGE結(jié)構(gòu)指針中保存的待操作進(jìn)程的窗口句柄參數(shù)獲得待操作進(jìn)程的窗口句柄;然后調(diào)用進(jìn)程ID查詢(xún)內(nèi)核函數(shù)查詢(xún)待操作進(jìn)程的ID;最后調(diào)用進(jìn)程路徑獲取內(nèi)核函數(shù)并根據(jù)待操作進(jìn)程的ID,獲取待操作進(jìn)程的進(jìn)程路徑。
[0134]第一判斷子模塊503,用于判斷所述發(fā)送端口名稱(chēng)、所述進(jìn)程路徑和所述第一鉤子函數(shù)的操作碼參數(shù)是否滿(mǎn)足預(yù)設(shè)條件;
[0135]其中,預(yù)設(shè)條件包括:所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑且所述操作碼參數(shù)為預(yù)設(shè)的結(jié)束進(jìn)程操作碼;
[0136]其中,判斷發(fā)送端口名稱(chēng)是否為預(yù)設(shè)的端口名稱(chēng)的過(guò)程與發(fā)送端口獲取子模塊501中所述的一致,此處不再贅述。
[0137]其中,判斷進(jìn)程路徑是否為目標(biāo)進(jìn)程路徑的過(guò)程為:預(yù)先讀取終端中的應(yīng)用程序注冊(cè)表獲取目標(biāo)進(jìn)程路徑的列表,判斷發(fā)送端口獲取子模塊501獲得的待操作進(jìn)程的進(jìn)程路徑是否為預(yù)先獲得的目標(biāo)進(jìn)程路徑列表中的進(jìn)程路徑,如果是,說(shuō)明待操作進(jìn)程的進(jìn)程路徑是目標(biāo)進(jìn)程路徑;否則,說(shuō)明待操作進(jìn)程的進(jìn)程路徑不是目標(biāo)進(jìn)程路徑。
[0138]可以理解的是,在判定所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑后,還需要判斷第一鉤子函數(shù)中保存的操作碼參數(shù)是否為預(yù)設(shè)的結(jié)束進(jìn)程操作碼,以確認(rèn)調(diào)用第一目標(biāo)函數(shù)的目的就是結(jié)束目標(biāo)進(jìn)程;在上述三個(gè)條件同時(shí)滿(mǎn)足時(shí),說(shuō)明調(diào)用第一目標(biāo)函數(shù)的目的就是結(jié)束目標(biāo)進(jìn)程,調(diào)用第一目標(biāo)函數(shù)的執(zhí)行主體很可能是惡意程序,需要拒絕響應(yīng)第一目標(biāo)函數(shù),從而拒絕通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程。
[0139]其中,預(yù)設(shè)的結(jié)束進(jìn)程操作碼包括:
[0140]EXIT_WIND0W_P0RT_ID,是退出進(jìn)程操作碼;
[0141]END_TASK_PORT_ID,是結(jié)束任務(wù)操作碼;
[0142]PROCESS_SHUTDOWN_PARAMETERS,是進(jìn)程關(guān)閉的操作碼。
[0143]這三個(gè)操作碼都是和結(jié)束進(jìn)程相關(guān)的,只要第一鉤子函數(shù)中的操作碼參數(shù)等于這三操作碼的其中一個(gè),就可以認(rèn)為第一鉤子函數(shù)中保存的操作碼參數(shù)是預(yù)設(shè)的結(jié)束進(jìn)程操作碼。
[0144]具體的,第一鉤子函數(shù)中的操作碼參數(shù)也可以保存在PCSRSS_MESSAGE結(jié)構(gòu)指針中。
[0145]第一判定結(jié)果確定子模塊504,用于在所述第一判斷子模塊503獲得的判斷結(jié)果為是時(shí),判定調(diào)用所述第一目標(biāo)函數(shù)是用于結(jié)束所述目標(biāo)進(jìn)程;
[0146]第二判定結(jié)果確定子模塊505,用于在所述第一判斷子模塊503獲得的判斷結(jié)果為否時(shí),判定調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程。
[0147]在上述預(yù)設(shè)條件中的任一條件不滿(mǎn)足時(shí),說(shuō)明調(diào)用第一目標(biāo)函數(shù)的目的不是結(jié)束目標(biāo)進(jìn)程,需要正常響應(yīng)對(duì)第一目標(biāo)函數(shù)的調(diào)用。
[0148]由于具體可以通過(guò)與第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),防止惡意程序通過(guò)調(diào)用第一目標(biāo)函數(shù)的方式結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)是會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明圖4所示的實(shí)施例提供的進(jìn)程處理方法,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全。
[0149]優(yōu)選的,在圖4所示的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例還提供了另一種進(jìn)程處理裝置,該裝置還可以包括:保存模塊和第一響應(yīng)模塊
[0150]保存模塊,用于在所述第一判斷模塊判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程前,保存所述第一目標(biāo)函數(shù)的函數(shù)地址;
[0151 ]具體的,可以在將第一目標(biāo)函數(shù)與第一鉤子函數(shù)掛鉤的過(guò)程中,保存第一目標(biāo)函數(shù)的地址;例如,當(dāng)在SSDT表中找到第一目標(biāo)函數(shù)時(shí),保存第一目標(biāo)函數(shù)的地址。
[0152]第一響應(yīng)模塊,用于在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,通過(guò)所述第一鉤子函數(shù),根據(jù)所述函數(shù)地址,響應(yīng)所述第一目標(biāo)函數(shù)。
[0153]具體的,可以在第一鉤子函數(shù)中設(shè)置一個(gè)指向第一目標(biāo)函數(shù)的地址的指針,在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,使系統(tǒng)調(diào)用第一鉤子函數(shù)中的指針指向第一目標(biāo)函數(shù),即響應(yīng)系統(tǒng)對(duì)第一目標(biāo)函數(shù)的調(diào)用。
[0154]這樣,當(dāng)系統(tǒng)調(diào)用第一目標(biāo)函數(shù)不是用于結(jié)束目標(biāo)進(jìn)程時(shí),可以實(shí)現(xiàn)系統(tǒng)對(duì)第一目標(biāo)函數(shù)的正常調(diào)用,保證用戶(hù)對(duì)其他進(jìn)程的正常操作。
[0155]如圖6所示,在圖4所示的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例還提供了另一種進(jìn)程處理裝置,該裝置還包括:第二監(jiān)測(cè)模塊601、第二判斷模塊602、觸發(fā)模塊603和第二響應(yīng)模塊604;
[0156]第二監(jiān)測(cè)模塊601,用于監(jiān)測(cè)第二目標(biāo)函數(shù)是否被調(diào)用,其中,所述第二目標(biāo)函數(shù)為進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù);
[0157]由于用戶(hù)在點(diǎn)擊系統(tǒng)的任務(wù)管理器(taskmgr)中的“結(jié)束進(jìn)程”按鈕時(shí),操作系統(tǒng)會(huì)調(diào)用進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù)這樣的第二目標(biāo)函數(shù),讓任務(wù)管理子系統(tǒng)結(jié)束待操作的進(jìn)程。例如,當(dāng)用戶(hù)點(diǎn)擊任務(wù)管理器(taskmgr)中的“結(jié)束任務(wù)”按鈕時(shí),操作系統(tǒng)會(huì)先調(diào)用進(jìn)程句柄獲取函數(shù)NtOpenProcess,然后調(diào)用進(jìn)程結(jié)束函數(shù)NtTerminateProcess等非常規(guī)內(nèi)核函數(shù)結(jié)束待操作進(jìn)程。
[0158]因此,可以通過(guò)對(duì)第二目標(biāo)函數(shù)是否被調(diào)用進(jìn)行監(jiān)測(cè),作為防止目標(biāo)進(jìn)程被惡意程序程序通過(guò)“結(jié)束進(jìn)程”的方式結(jié)束結(jié)束的首要任務(wù)。
[0159]第二判斷模塊602,用于在所述第二監(jiān)測(cè)模塊601監(jiān)測(cè)到所述二目標(biāo)函數(shù)被調(diào)用時(shí),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程;
[0160]可以通過(guò)與所述第二目標(biāo)函數(shù)掛鉤的第二鉤子函數(shù),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。
[0161]將第二目標(biāo)函數(shù)與第二鉤子函數(shù)掛鉤的過(guò)程為:查找SSDT表,找到第二目標(biāo)函數(shù),保存第二目標(biāo)函數(shù)的函數(shù)地址;定義一個(gè)第二鉤子函數(shù),利用第二鉤子函數(shù)替換SSDT表中的第二目標(biāo)函數(shù)。
[0162]需要說(shuō)明的是,利用與第二目標(biāo)函數(shù)掛鉤的第二鉤子函數(shù),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程的具體過(guò)程屬于現(xiàn)有技術(shù),此處不再贅述。
[0163]觸發(fā)模塊603,用于在所述第二判斷模塊602獲得的判斷結(jié)果為是時(shí),觸發(fā)所述拒絕結(jié)束模塊403;
[0164]第二響應(yīng)模塊604,用于在所述第二判斷模塊602獲得的判斷結(jié)果為否時(shí),響應(yīng)對(duì)第二目標(biāo)函數(shù)的調(diào)用。
[0165]應(yīng)用本發(fā)明圖6所示的實(shí)施例,可以同時(shí)防止惡意程序通過(guò)“結(jié)束任務(wù)”的方式或“結(jié)束進(jìn)程”的方式結(jié)束目標(biāo)進(jìn)程,全面保護(hù)了目標(biāo)進(jìn)程的安全,當(dāng)目標(biāo)進(jìn)程為終端中的安全軟件進(jìn)程時(shí),可以全面提高系統(tǒng)的安全性。
[0166]本發(fā)明實(shí)施例提供的一種進(jìn)程處理裝置,可以監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù);若被調(diào)用,判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程;若為是,拒絕結(jié)束所述目標(biāo)進(jìn)程。由于是通過(guò)判斷調(diào)用第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,確定是否拒絕結(jié)束目標(biāo)進(jìn)程,且第一目標(biāo)函數(shù)會(huì)在惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程時(shí)被調(diào)用。因此,應(yīng)用本發(fā)明實(shí)施例提供的進(jìn)程處理裝置,可以防止惡意程序通過(guò)結(jié)束任務(wù)的方式結(jié)束目標(biāo)進(jìn)程,從而保護(hù)了目標(biāo)進(jìn)程的安全。
[0167]對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0168]需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(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è)備中還存在另外的相同要素。
[0169]本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0170]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種進(jìn)程處理方法,其特征在于,所述方法包括: 監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù); 若被調(diào)用,判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程; 若為是,拒絕結(jié)束所述目標(biāo)進(jìn)程。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,包括: 通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程,包括: 根據(jù)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù)中的發(fā)送端口句柄參數(shù),獲得所述第一目標(biāo)函數(shù)發(fā)送消息的發(fā)送端口名稱(chēng); 根據(jù)所述第一鉤子函數(shù)中的窗口句柄參數(shù),獲得待操作進(jìn)程的進(jìn)程路徑; 判斷所述發(fā)送端口名稱(chēng)、所述進(jìn)程路徑和所述第一鉤子函數(shù)的操作碼參數(shù)是否滿(mǎn)足以下條件:所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑且所述操作碼參數(shù)為預(yù)設(shè)的結(jié)束進(jìn)程操作碼; 若為是,則判定調(diào)用所述第一目標(biāo)函數(shù)是用于結(jié)束所述目標(biāo)進(jìn)程; 否則,判定調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程前,所述方法還包括: 保存所述第一目標(biāo)函數(shù)的函數(shù)地址; 在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,通過(guò)所述第一鉤子函數(shù),根據(jù)所述函數(shù)地址,響應(yīng)對(duì)所述第一目標(biāo)函數(shù)的調(diào)用。5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 監(jiān)測(cè)第二目標(biāo)函數(shù)是否被調(diào)用,其中,所述第二目標(biāo)函數(shù)為進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù); 若被調(diào)用,判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程; 若為是,執(zhí)行所述拒絕結(jié)束所述目標(biāo)進(jìn)程的步驟。6.一種進(jìn)程處理裝置,其特征在于,所述裝置包括:第一監(jiān)測(cè)模塊、第一判斷模塊和拒絕結(jié)束模塊, 所述第一監(jiān)測(cè)模塊,用于監(jiān)測(cè)第一目標(biāo)函數(shù)是否被調(diào)用,其中,所述第一目標(biāo)函數(shù)為使用本地過(guò)程調(diào)用LPC機(jī)制向進(jìn)程管理子系統(tǒng)發(fā)送消息的函數(shù); 所述第一判斷模塊,用于在所述第一監(jiān)測(cè)模塊監(jiān)測(cè)到所述第一目標(biāo)函數(shù)被調(diào)用時(shí),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程; 所述拒絕結(jié)束模塊,用于在所述第一判斷模塊獲得的判斷結(jié)果為是時(shí),拒絕結(jié)束所述目標(biāo)進(jìn)程。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一判斷模塊,具體用于通過(guò)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù),判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第一判斷模塊包括:發(fā)送端口獲取子模塊、進(jìn)程路徑獲取子模塊、第一判斷子模塊、第一判定結(jié)果確定子模塊和第二判定結(jié)果確定子模塊, 所述發(fā)送端口獲取子模塊,用于根據(jù)與所述第一目標(biāo)函數(shù)掛鉤的第一鉤子函數(shù)的發(fā)送端口句柄參數(shù),獲得所述第一目標(biāo)函數(shù)發(fā)送消息的發(fā)送端口名稱(chēng); 所述進(jìn)程路徑獲取子模塊,用于根據(jù)所述第一鉤子函數(shù)的窗口句柄參數(shù),獲得待操作進(jìn)程的進(jìn)程路徑; 所述第一判斷子模塊,用于判斷所述發(fā)送端口名稱(chēng)、所述進(jìn)程路徑和所述第一鉤子函數(shù)的操作碼參數(shù)是否滿(mǎn)足以下條件:所述發(fā)送端口名稱(chēng)為預(yù)設(shè)的端口名稱(chēng)、所述進(jìn)程路徑為目標(biāo)進(jìn)程路徑且所述操作碼參數(shù)為預(yù)設(shè)的結(jié)束進(jìn)程操作碼; 所述第一判定結(jié)果確定子模塊,用于在所述第一判斷子模塊獲得的判斷結(jié)果為是時(shí),判定調(diào)用所述第一目標(biāo)函數(shù)是用于結(jié)束所述目標(biāo)進(jìn)程; 所述第二判定結(jié)果確定子模塊,用于在所述第一判斷子模塊獲得的判斷結(jié)果為否時(shí),判定調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括:保存模塊和第一響應(yīng)模塊 所述保存模塊,用于在所述第一判斷模塊判斷調(diào)用所述第一目標(biāo)函數(shù)是否是用于結(jié)束目標(biāo)進(jìn)程前,保存所述第一目標(biāo)函數(shù)的函數(shù)地址; 所述第一響應(yīng)模塊,用于在調(diào)用所述第一目標(biāo)函數(shù)不是用于結(jié)束所述目標(biāo)進(jìn)程的情況下,通述第一鉤子函數(shù),根據(jù)所述函數(shù)地址,響應(yīng)對(duì)所述第一目標(biāo)函數(shù)的調(diào)用。10.根據(jù)權(quán)利要求6-9中任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括:第二監(jiān)測(cè)模塊、第二判斷模塊和觸發(fā)模塊; 所述第二監(jiān)測(cè)模塊,用于監(jiān)測(cè)第二目標(biāo)函數(shù)是否被調(diào)用,其中,所述第二目標(biāo)函數(shù)為進(jìn)程句柄獲取函數(shù)或進(jìn)程結(jié)束函數(shù); 所述第二判斷模塊,用于在所述第二監(jiān)測(cè)模塊監(jiān)測(cè)到所述二目標(biāo)函數(shù)被調(diào)用時(shí),判斷調(diào)用所述第二目標(biāo)函數(shù)是否是是用于結(jié)束所述目標(biāo)進(jìn)程; 所述觸發(fā)模塊,用于在所述第二判斷模塊獲得的判斷結(jié)果為是時(shí),觸發(fā)所述拒絕結(jié)束模塊。
【文檔編號(hào)】G06F21/52GK105975851SQ201610269242
【公開(kāi)日】2016年9月28日
【申請(qǐng)日】2016年4月27日
【發(fā)明人】李文靖
【申請(qǐng)人】北京金山安全軟件有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
云霄县| 宁武县| 太谷县| 南阳市| 城步| 兴海县| 黔西县| 东源县| 红河县| 湘乡市| 扎赉特旗| 宣化县| 和平县| 车险| 石泉县| 宁河县| 山阴县| 柏乡县| 宜昌市| 奎屯市| 噶尔县| 浪卡子县| 平泉县| 思茅市| 扬中市| 澳门| 葵青区| 灵台县| 元江| 麦盖提县| 南陵县| 屯昌县| 江源县| 冀州市| 阜平县| 鱼台县| 信阳市| 忻州市| 湖口县| 平陆县| 兴和县|