亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Windows環(huán)境下驅(qū)動保護(hù)進(jìn)程淺析

        2014-01-01 00:00:00梁小龍周陸洲
        數(shù)字化用戶 2014年3期

        【摘 要】隨著技術(shù)的發(fā)展,計算機(jī)系統(tǒng)已經(jīng)通過特定程序可實現(xiàn)任意操作,微軟的windows是使用最廣泛的系統(tǒng)之一,其中,Rootkit技術(shù)在windows下最常見的實現(xiàn)方式當(dāng)屬驅(qū)動級的內(nèi)存技術(shù)對抗,它被廣泛的應(yīng)用于游戲保護(hù),殺毒軟件防護(hù)等方面。

        【關(guān)鍵詞】對抗 驅(qū)動 Windows API Hook

        一、Intel X86處理器

        Intel的X86處理器是通過Ring級別來控制訪問權(quán)限的,級別共分4層,從Ring0到Ring3(后面簡稱R0,R1,R2,R3)。R0層擁有最高的權(quán)限,R3層擁有最低權(quán)限。而現(xiàn)在的操作系統(tǒng),包括Windows和Linux都沒有采用4層權(quán)限,而只是使用了2層—R0層和R3層,分別用來存放操作系統(tǒng)數(shù)據(jù)和應(yīng)用程序數(shù)據(jù)。

        二、用戶模式和內(nèi)核模式

        Windows從總體上分為內(nèi)核模式(Kernel Mode)和用戶模式(User Mode),Windows將內(nèi)核模式運(yùn)行在CPU的R0層,而將用戶模式運(yùn)行在CPU的R3層。而驅(qū)動程序一旦加載,就運(yùn)行在R0層,就擁有了和操作系統(tǒng)同樣的權(quán)限,可以做任何事情。

        三、WIN32子系統(tǒng)

        Win32是Windows的一個子系統(tǒng),還有另外的子系統(tǒng)如OS/2、POSIX、WOW等。不同的子系統(tǒng)系統(tǒng)提供了不同的編程接口,即API,一般說的API指的就是Win32 API。Win32子系統(tǒng)是最純正的Windows子系統(tǒng),提供了大量的API函數(shù),程序員只需要熟練的使用這些API就可以寫出Windows應(yīng)用程序,當(dāng)然程序員也可以考慮第三方庫,如VC提供的MFC,但這些庫不過是在應(yīng)用程序和Win32子系統(tǒng)中間加了一層封裝而以,沒有本質(zhì)的區(qū)別。Windows API 分為三類 分別是USER函數(shù),GDI函數(shù),和KERNEL函數(shù)。USER函數(shù)(user32.dll):這類函數(shù)管理窗口,菜單,對話框和控件;GDI函數(shù)(gdi32.dll):這類函數(shù)在物理設(shè)備上執(zhí)行繪圖操作;KERNEL函數(shù)(kernel32.dll):這類函數(shù)管理非GUI資源,如進(jìn)程、線程和同步服務(wù)等。

        四、Native API(Ntdll.dll)

        大部分Win32子系統(tǒng)的API都是通過Native API實現(xiàn)的。Native API的函數(shù)一般都是在Win32 API上加上Nt兩個字母。Native API 是可由用戶模式和內(nèi)核模式程序調(diào)用的NT系統(tǒng)服務(wù)集接口,它們直接由操作系統(tǒng)實現(xiàn)。

        五、SSDT

        SSDT的全稱是System Services Descriptor Table,系統(tǒng)服務(wù)描述符表。這個表就是一個把R3的Win32 API和R0的內(nèi)核API聯(lián)系起來。SSDT并不僅僅只包含一個龐大的地址索引表,它還包含著一些其它有用的信息,諸如地址索引的基地址、服務(wù)函數(shù)個數(shù)等。系統(tǒng)服務(wù)是由操作系統(tǒng)提供的一個函數(shù)集,這些函數(shù)可以幫助調(diào)用者實現(xiàn)系統(tǒng)的各種功能。用戶態(tài)的應(yīng)用程序可以通過API函數(shù)間接地調(diào)用系統(tǒng)服務(wù)。在內(nèi)核態(tài)中,系統(tǒng)通過服務(wù)描述符表尋找相應(yīng)系統(tǒng)服務(wù)函數(shù)。在系統(tǒng)中有2個描述符表(SYSTEM_DESCRIPTOR_TABLE 結(jié)構(gòu)):(1)KeServiceDescriptorTable,由ntosknl.exe導(dǎo)出,主要為KERNEL32和ADVAPI32中的API提供服務(wù);(2)KeServiceDescriptorTable Shadow,未被導(dǎo)出,主要完成USER32/GUI32中的請求。每個描述符表由4個連續(xù)的系統(tǒng)服務(wù)表(System Service Table, SST)的表項組成,每項可以描述一組服務(wù)。每組服務(wù)由一個系統(tǒng)服務(wù)分發(fā)表(System Service Dispatch Table, SSDT)和一個系統(tǒng)服務(wù)參數(shù)表(System Service Parameter Table, SSPT)組成,分別對服務(wù)的入口地址和所需參數(shù)進(jìn)行索引。每個服務(wù)有一個服務(wù)序號,系統(tǒng)根據(jù)這個序號查找2個表,最終可找到相應(yīng)的服務(wù)函數(shù)和參數(shù)信息。

        六、sysenter和sysexit指令

        從R3切換到R0層,早期的操作系統(tǒng)一般通過中斷來實現(xiàn),如Linux下的 int 80h,Windows NT和Windows2000下的 int 2Eh。而在Windows XP以后則使用了快速系統(tǒng)調(diào)用sysenter和sysexist來進(jìn)行系統(tǒng)調(diào)用和返回。

        七、驅(qū)動文件

        亦為PE格式的一種,含有用戶模式驅(qū)動、文件系統(tǒng)驅(qū)動等,各類驅(qū)動配合操作系統(tǒng)內(nèi)核組成了龐大的windows系統(tǒng),用戶層應(yīng)用程序調(diào)用API,該API對應(yīng)用程序提供的參數(shù)進(jìn)行校驗再將所有東西轉(zhuǎn)化為unicode,然后調(diào)用ntdll.dll中的KiFastSystemCall函數(shù)切換入內(nèi)核,如將服務(wù)序號放入eax、將存放參數(shù)的用戶棧指針放入edx,再切換到內(nèi)核態(tài)。當(dāng)程序的處理流程進(jìn)入R0之后,系統(tǒng)會根據(jù)服務(wù)號(eax)在SSDT這個系統(tǒng)服務(wù)描述符表中查找對應(yīng)的表項,這個找到的表項就是系統(tǒng)服務(wù)函數(shù)的真正地址。之后,系統(tǒng)會根據(jù)這個地址調(diào)用相應(yīng)的系統(tǒng)服務(wù)函數(shù),并把結(jié)果原路返回給ntdll.dll中的API。在調(diào)用sysenter或int 2Eh之后,Windows系統(tǒng)將會捕獲你的這個調(diào)用,然后進(jìn)入ring0層,調(diào)用內(nèi)核服務(wù)函數(shù)NtOpenProcess。由此,如果驅(qū)動程序在內(nèi)核態(tài)Hook住了NtOpenProcess函數(shù),通過對傳入?yún)?shù)的進(jìn)行過濾,如果是被保護(hù)的程序則返回參數(shù)為0,即可實現(xiàn)對程序的簡單保護(hù)。

        八、SSDT HOOK的簡單實現(xiàn)

        (環(huán)境 Windows XP sp3 32bit)驅(qū)動層代碼t_addr=(LONG)KeServiceDescriptorTable->ServiceTableBase;SSDT_Adr=(PLONG)(t_addr+0x23*4); //SSDT表索引值0x23(即NtOpenProcess)SSDT_NtOpenProcess_Cur_Addr=*SSDT_Adr;RealNtOpenAddress = *SSDT_Adr; //保留原始地址RealNtOpenProcess = ( NTOPENPROCESS *)RealNtOpenAddress; __asm //去掉頁面保護(hù)。在驅(qū)動入口DriverEntry()派遣函數(shù)中調(diào)用Hook(),從exe文件中傳入進(jìn)程PID,設(shè)置SSDT Hook,實現(xiàn)對進(jìn)程的簡單保護(hù)。

        九、結(jié)語

        在內(nèi)核下存在著我們看不到的戰(zhàn)爭,隨著技術(shù)的發(fā)展,先前頗為流行的窗口掛鉤、inline hook、API掛鉤、進(jìn)程注入等技術(shù)已然成為昨日黃花,大有逐漸淡出之勢,取而代之的,則是更狠毒、更為赤裸裸的詞匯:驅(qū)動、隱藏進(jìn)程、Rootkit……驅(qū)動級的對抗技術(shù)如今已被廣泛應(yīng)用到了殺毒軟件的主動防御、各種軟件的自我保護(hù)以及游戲的保護(hù)、反外掛等技術(shù)中去。如360的驅(qū)動加載攔截,就是創(chuàng)建了一個LoadImage()的系統(tǒng)回調(diào)函數(shù),用XueTr刪除后發(fā)現(xiàn)其他程序加載驅(qū)動后360就無再提示,進(jìn)入了Ring0態(tài)可以完成任何操作,如結(jié)束掉殺毒軟件等為下一步利用計算機(jī)做準(zhǔn)備;將合理利用驅(qū)動還可以實現(xiàn)提示用戶有惡意程序結(jié)束掉可信賴的程序,并給出程序名稱與路徑等關(guān)鍵信息,為進(jìn)一步查殺病毒提供了便利;監(jiān)視注冊表;監(jiān)視磁盤讀?。幌到y(tǒng)還原等。正因為Ring0如此重要的地位,使其成了兵家必爭之地,可以說誰搶占了先機(jī),凌駕Ring3之上,誰就在這場戰(zhàn)爭中增加了勝算。

        參考文獻(xiàn):

        [1]《天書夜讀-從匯編語言到Windows內(nèi)核編程》.電子工業(yè)出版社 2009

        [2]《Windows驅(qū)動開發(fā)技術(shù)詳解》.電子工業(yè)出版社 2009

        [3]《內(nèi)核態(tài)下的系統(tǒng)服務(wù)掛鉤對抗》.計算機(jī)工程 2010

        [4]《多態(tài)技術(shù)加殼軟件的實現(xiàn)》.甘肅科技 2010

        欧美1区二区三区公司| 国产精品久久久久久久妇| 精品久久久噜噜噜久久久| 调教在线播放黄| 中国av一区二区三区四区| 国产三a级三级日产三级野外 | 亚洲一区二区在线观看av| 男人添女人囗交做爰视频| 亚洲成av人片在线观看无码| 伊香蕉大综综综合久久| 国产精品高清一区二区三区人妖| 国产精品亚洲第一区二区三区| 亚洲av麻豆aⅴ无码电影| 真实国产乱视频国语| 国产精品久久国产三级国| av大全亚洲一区二区三区| 18分钟处破好疼哭视频在线观看 | 久久精品国产免费观看| 中国一级毛片在线观看| 日韩av免费在线不卡一区| 插入日本少妇一区二区三区| 色橹橹欧美在线观看视频高清| 无码熟妇人妻AV影音先锋| 日本高清一区二区三区不卡| 国产99久久久国产精品~~牛| 天躁夜夜躁狼狠躁| 偷拍区亚洲区一区二区| 国产精品亚洲综合久久系列| 色偷偷亚洲第一成人综合网址| 久久精品国产四虎| 国产精品成人有码在线观看| 亚洲欧洲免费无码| 国产美女露脸口爆吞精| 老熟女一区二区免费| 日本一区二区三区不卡在线| 亚洲中字慕日产2020| 国产免费一级高清淫日本片| 91九色精品日韩内射无| 国产精品天干天干综合网| 少妇厨房愉情理伦片bd在线观看| 绿帽人妻被插出白浆免费观看|