基于WIN殺死進(jìn)程的設(shè)計(jì)技術(shù)研究
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ù)了,也就是能夠殺死卡巴了。
欄目分類
- 馬街書會(huì)文創(chuàng)產(chǎn)品的設(shè)計(jì)與創(chuàng)新
- 平面廣告設(shè)計(jì)中色彩要素的重要性體現(xiàn)
- 完善現(xiàn)代學(xué)徒制下民族家具設(shè)計(jì)人才培養(yǎng)的措施
- 設(shè)計(jì)審美的價(jià)值判斷
- 室內(nèi)設(shè)計(jì)思維與格塔理論
- 現(xiàn)階段動(dòng)漫設(shè)計(jì)專業(yè)教學(xué)模式及方法存在的問題
- 北歐家具設(shè)計(jì)的風(fēng)格及特點(diǎn)
- 淺談色彩心理學(xué)在交互設(shè)計(jì)中的運(yùn)用
- 淺析兒童書籍裝幀設(shè)計(jì)中色彩的運(yùn)用與表達(dá)
- 符號(hào)學(xué)背景下中國(guó)傳統(tǒng)吉祥圖案及其在現(xiàn)代服裝設(shè)計(jì)中的應(yīng)用
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 官方認(rèn)定!CSSCI南大核心首批191家“青年學(xué)者友好期刊名單”
- 2023JCR影響因子正式公布!
- 國(guó)內(nèi)核心期刊分級(jí)情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個(gè)很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問題”。
- 重磅!CSSCI來源期刊(2023-2024版)最新期刊目錄看點(diǎn)分析!全網(wǎng)首發(fā)!
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個(gè)知識(shí)點(diǎn)。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點(diǎn)那些評(píng)職稱超管用的資源,1,3和5已經(jīng)“絕種”了