優(yōu)勝?gòu)倪x擇開始,我們是您最好的選擇!—— 中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)
0373-5939925
2851259250@qq.com
我要檢測(cè) 我要投稿 合法期刊查詢
您的位置:網(wǎng)站首頁 > 優(yōu)秀論文 > 正文

基于WIN殺死進(jìn)程的設(shè)計(jì)技術(shù)研究

作者:陳平來源:原創(chuàng)日期:2013-07-06人氣:743

1、引言
在Windows下枚舉進(jìn)程是十分簡(jiǎn)單的事情,可以直接調(diào)用Windows提供的API函數(shù),但是要注意的是所用的API函數(shù)對(duì)于不同的Win32操作系統(tǒng)有依賴性。在Windows9x、WindowsMe、Windows2000Professional以及WindowsXP中,我們可以用ToolHelp32庫中的APIs函數(shù)。但是在WindowsNT里,我們必須用PSAPI庫中的APIs函數(shù)。
2、枚舉進(jìn)程
使用ToolHelp32函數(shù)的第一步是用CreateToolhelp32Snapshot()函數(shù)創(chuàng)建系統(tǒng)信息“快照”。這個(gè)函數(shù)可以讓你選擇存儲(chǔ)在快照中的信息類型。如果你只是對(duì)進(jìn)程信息感興趣,那么只要包含TH32CS_SNAPPROCESS標(biāo)志即可。CreateToolhelp32Snapshot()函數(shù)返回一個(gè)HANDLE,完成調(diào)用之后,必須將此HANDLE傳給CloseHandle()[1]。接下來是調(diào)用一次Process32First函數(shù),從快照中獲取進(jìn)程列表,然后重復(fù)調(diào)用Process32Next,直到函數(shù)返回FALSE為止。這樣將遍歷快照中進(jìn)程列表。這兩個(gè)函數(shù)都帶兩個(gè)參數(shù),它們分別是快照句柄和一個(gè)PROCESSENTRY32結(jié)構(gòu)。
3、殺死進(jìn)程
進(jìn)程由兩部分構(gòu)成:一個(gè)是進(jìn)程的內(nèi)核對(duì)象,另一個(gè)是地址空間。一個(gè)進(jìn)程的完全終止就是使該進(jìn)程的內(nèi)核對(duì)象的使用計(jì)數(shù)變?yōu)榱悖尫牌湔加玫牡刂房臻g。我們采用系統(tǒng)中提供的在另一個(gè)進(jìn)程中的線程調(diào)用TerminateProcess()的方法,即通過調(diào)用TerminateProcess()來結(jié)束其他進(jìn)程,具體實(shí)現(xiàn)方式為如下:首先,通過函數(shù)OpenProcess()獲取進(jìn)程的句柄,然后通過函數(shù)GetExitCodeProcess()獲取退出碼,然后通過TerminateProcess()強(qiáng)制殺死進(jìn)程。殺死一般的進(jìn)程可以,但是要是殺死內(nèi)核態(tài)的進(jìn)程就不可以了。這個(gè)需要提升本進(jìn)程的權(quán)限,SE_DEBUG_NAME,這些需要通過OpenProcessToken(),LookupPrivilegeValue(),AdjustTokenPrivileges()等函數(shù)來完成[2]。本次設(shè)中采取了OpenProcessToken()來提升進(jìn)程的權(quán)限。
以上實(shí)現(xiàn)進(jìn)程的枚舉和終止,但有些進(jìn)程依然無法殺死,比如說卡巴斯基以及360安全衛(wèi)士。接下來具體分析為什么卡巴不能夠被殺死。
4、殺死卡巴斯基
卡巴斯基為了實(shí)現(xiàn)其主動(dòng)防御的功能,hook了很多內(nèi)核函數(shù),其中有兩個(gè)很關(guān)鍵:NtOpenProcess(),NtTerminateProcess(),在應(yīng)用程序中要?dú)⑺滥硞€(gè)進(jìn)程的話,首先系統(tǒng)會(huì)給卡巴發(fā)消息,此時(shí)卡巴判斷是不是要?dú)⑺浪约?,若是,則禁止,若不是,則返回,繼續(xù)執(zhí)行殺死進(jìn)程的過程。所以要?dú)⑺揽ò停仨毣謴?fù)那些被卡巴hook的函數(shù),但也不是所有被hook的函數(shù)都要回復(fù),只需恢復(fù)NtOpenProcess(),NtTerminateProcess()[3]即可。在編寫的驅(qū)動(dòng)程序中我們只需把以上兩個(gè)函數(shù)的服務(wù)地址回到其相應(yīng)的原始服務(wù)函數(shù)地址即可:
*((ULONG*)OpenProcessAddr)=0x805cc408;
*((ULONG*)TerminateProcessAddr)=0x805d39aa;
這兩個(gè)常數(shù)是在冰刃軟件上查取的。在這樣處理后,卡巴就不能hook這兩個(gè)函數(shù)了,也就是能夠殺死卡巴了。

網(wǎng)絡(luò)客服QQ: 沈編輯

投訴建議:0373-5939925????投訴建議QQ:

招聘合作:2851259250@qq.com (如您是期刊主編、文章高手,可通過郵件合作)

地址:河南省新鄉(xiāng)市金穗大道東段266號(hào)中州期刊聯(lián)盟 ICP備案號(hào):豫ICP備2020036848

【免責(zé)聲明】:中州期刊聯(lián)盟所提供的信息資源如有侵權(quán)、違規(guī),請(qǐng)及時(shí)告知。

版權(quán)所有:中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

關(guān)注”中州期刊聯(lián)盟”公眾號(hào)
了解論文寫作全系列課程

核心期刊為何難發(fā)?

論文發(fā)表總嫌貴?

職院?jiǎn)挝话l(fā)核心?

掃描關(guān)注公眾號(hào)

論文發(fā)表不再有疑惑

論文寫作全系列課程

掃碼了解更多

輕松寫核心期刊論文

在線留言