版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Windows 中 Filter-Hook 驅(qū)動(dòng)程序在 Windows2000 和 Windows XP 中,System32drivers 目錄下的 ipfltdrv.sys 是Microsoft 提供的ip協(xié)議過濾驅(qū)動(dòng)程序。它允許用戶注冊(cè)自己的ip數(shù)據(jù)報(bào)處理函數(shù)。在MSDN中有關(guān)于這方面內(nèi)容的簡(jiǎn)短說明,位于Filter-Hook Driver Referenee 章節(jié)中。這一部分說明文檔論述了filter-hook驅(qū)程實(shí)現(xiàn)的回調(diào)函數(shù)和該驅(qū)程用以注冊(cè)回調(diào)函數(shù)的I/O控制碼?;卣{(diào)函數(shù)是這類驅(qū)程的主體部分。操作系統(tǒng)提供的ip過濾驅(qū)動(dòng)程序使用這個(gè)過濾鉤子來判斷ip數(shù)據(jù)包的處理方式。所注冊(cè)的過濾鉤子
2、是用PacketFilterExte nsio nPtr數(shù)據(jù)類型定義的。由于是使用函數(shù)的地址而不是函數(shù)的名字注冊(cè)過濾鉤子的入口點(diǎn),所以可以自由的為過濾鉤子函數(shù)命名。下面分別說明鉤子的數(shù)據(jù)結(jié)構(gòu)和注冊(cè)該鉤子的I/O控制碼。PacketFilterExte nsio nPtr下面是他的定義。typedef PF_FORWARD_ACTION (*PacketFilterExte nsio nPtr)(un sig ned char*PacketHeader,un sig ned char*Packet,un sig ned intPacketLe ngth.un sig ned intRecvI n
3、terfacel ndex,un sig ned intSen dI nterfacel ndex,IPAddrRecvLi nkNextHop,IPAddrSen dLi nkNextHop);ip數(shù)據(jù)包的命運(yùn),是繼續(xù)傳遞,該類型就是過濾鉤子的回調(diào)函數(shù),他決定所有傳過來的還是丟掉,或者允許ip過濾驅(qū)動(dòng)程序繼續(xù)處理。1. 參數(shù)PacketHeader指向該數(shù)據(jù)包的ip頭部的指針。Filter-Hook 驅(qū)動(dòng)程序可以將其轉(zhuǎn)換為IPHeader結(jié)構(gòu)指針類型。PacketFilter-Hook驅(qū)動(dòng)程序接收到的包含數(shù)據(jù)包信息的緩沖區(qū)指針。該緩沖區(qū)不包含PacketHeader 指針指向的ip協(xié)議頭。P
4、acketLe ngth以字節(jié)為單位的 Packet緩沖區(qū)的長(zhǎng)度。該長(zhǎng)度不包含ip協(xié)議頭的大小。Recvln terface In dex數(shù)據(jù)包到達(dá)的接口適配器的序號(hào)。Filter-Hook驅(qū)動(dòng)程序使用該序號(hào)訪問接收數(shù)據(jù)包的適配器。對(duì)于發(fā)送的數(shù)據(jù)包,該參數(shù)為INVALID_PF_IF_INDEX,并且參數(shù) RecvLi nkNextHop的值沒有意義。Sendin terface In dex數(shù)據(jù)包發(fā)送的接口適配器的序號(hào)。如果數(shù)據(jù)包需要通過該適配器路由,可以通過簡(jiǎn)單網(wǎng) 絡(luò)協(xié)議(SNMP )查詢路由表。對(duì)于接收的數(shù)據(jù)包,該參數(shù)為INVALID_PF_IF_INDEX,并且參數(shù) Se ndLi n
5、kNextHop的值沒有意義。RecvLi nkNextHop如果接口適配器是一個(gè)多點(diǎn)(綁定多個(gè)ip地址?)接口,該參數(shù)為適配器接收該數(shù)據(jù)包時(shí)的ip地址。否則,該參數(shù)為ZERO_PF_IP_ADDR。Se ndLi nkNextHop如果接口適配器是一個(gè)多點(diǎn)(綁定多個(gè)ip地址?)接口,該參數(shù)為適配器接發(fā)送數(shù)據(jù)包時(shí)的ip地址。否則,該參數(shù)為ZERO_PF_IP_ADDR。2. 返回值返回PF_FORWARD_ACTION 枚舉類型的值:PF_FORWARD該返回值指示ip過濾驅(qū)動(dòng)程序應(yīng)該立刻將數(shù)據(jù)包轉(zhuǎn)發(fā)到ip協(xié)議棧中。如果該數(shù)據(jù)包是本機(jī)需要的數(shù)據(jù)包,ip協(xié)議將其轉(zhuǎn)發(fā)給上層協(xié)議處理,如果不是到本機(jī)
6、的數(shù)據(jù)包,則ip將路由該數(shù)據(jù)包(如果此時(shí)路由功能被打開)。PF_DROP該返回值指示ip過濾驅(qū)動(dòng)程序?qū)⒘⒖滔騣p協(xié)議棧發(fā)出丟棄響應(yīng)。 這時(shí)ip協(xié)議將丟棄該 數(shù)據(jù)包。PF_PASS該返回值指示ip過濾驅(qū)動(dòng)程序處理該數(shù)據(jù)包,并將結(jié)果動(dòng)作返回到ip協(xié)議棧。如果Filter-Hook 驅(qū)動(dòng)程序認(rèn)為不需要處理該數(shù)據(jù)包,則應(yīng)該返回該值。3. 注釋如果Filter-Hook 驅(qū)動(dòng)程序返回PF_PASS,ip過濾驅(qū)動(dòng)程序?qū)⑻幚碓摂?shù)據(jù)包。在這種情況下,用戶態(tài)應(yīng)用程序可以通過 Packet Filteri ng API控制包的過濾動(dòng)作(iphlpapi.lib )。通過這些API函數(shù)可以創(chuàng)建和管理ip數(shù)據(jù)包的輸入
7、輸出。每一個(gè)ip適配器接口都可以有一 個(gè)或幾個(gè)與其相關(guān)聯(lián)的過濾器。過濾器可以包括ip地址,地址掩碼,端口號(hào),協(xié)議標(biāo)示符。更多的信息參考 Platform SDK 。IP過濾驅(qū)動(dòng)程序可以使用IPHeader結(jié)構(gòu)傳遞數(shù)據(jù)包的ip4. IPHeaderPacketHeader 參數(shù)指向的緩沖區(qū)通常被定義為IPHeader的細(xì)節(jié)信息。其定義如下:頭信息。結(jié)構(gòu)。該結(jié)構(gòu)提供了數(shù)據(jù)包UCHARiph_verle n;/ Version and len gthUCHAR iph_tos;/ Type of serviceUSHORTiph_le ngth;/ Total datagram len gthUSH
8、ORTiphd;/ Ide ntificati onUSHORT iph_offset;/ Flags, fragme nt offsetUCHAR iph_ttl;/ Time to liveUCHAR iph_protocol;/ Protocoltypedef struct iphdr USHORT iph_xsum;/ Header checksumULONG iph_src; / Source addressULONG iph_dest;/ Desti nation address iphdr;該結(jié)構(gòu)的成員的含義參看其后面的注釋。在Linux源程序中或者其他講解TCP/IP協(xié)議的書籍
9、中都有詳細(xì)的說明。IOCTL_PF_SET_EXTENSION_POINTERFilter-Hook 使用該I/O控制碼建立一個(gè)IRP,并將其提交給ip過濾驅(qū)動(dòng)程序。通常 filter-hook 驅(qū)動(dòng)程序使用 loBuildDeviceloCo ntrolRequest函數(shù)建立所需的 IRP。該控制碼向ip過濾驅(qū)動(dòng)程序注冊(cè)過濾鉤子回調(diào)函數(shù),當(dāng)有數(shù)據(jù)包發(fā)送或者接收時(shí),ip過濾驅(qū)動(dòng)程序就要調(diào)用這些回調(diào)函數(shù)。并且,該控制碼也用來從ip過濾驅(qū)動(dòng)程序中清除回調(diào)函數(shù)。函數(shù)的原型:為了方便對(duì)比,給出在loBuildDeviceloCo ntrolRequestPIRP loBuildDeviceloCo n
10、trolRequest(IN ULONG loCo ntrolCode,IN PDEVICE_OBJECT DeviceObject,IN PVOID In putBuffer OPTIONAL,IN ULONG In putBufferLe ngth,OUT PVOID OutputBuffer OPTIONAL,IN ULONG OutputBufferLe ngth,IN BOOLEAN In ternalDeviceloCo ntrol,IN PKEVENT Event,OUT PIO_STATUS_BLOCK loStatusBlock);在這里,使用loBuildDeviceloC
11、o ntrolRequest函數(shù)時(shí),其參數(shù)如下:plrp=loBuildDeviceloC on trolRequest(IOCTL_PF_SET_EXTENSION_POINTER, pT argetDeviceObject,&H ookl nfo,sizeof(PF_SET_EXTENSION_HOOK_INFO),NULL,0,FALSE,NULL,&IoStatusBlock);Hookl nfo為當(dāng)清除回調(diào)函其中,pTargetDeviceObject 指向ip過濾驅(qū)動(dòng)程序的設(shè)備對(duì)象;PF_SET_EXTENSION_HOOK_INFO 結(jié)構(gòu),該結(jié)構(gòu)中包含了回調(diào)函數(shù)的
12、地址。數(shù)時(shí),將該結(jié)構(gòu)中的函數(shù)指針賦值為NULL即可。Filter-hook驅(qū)動(dòng)程序通過調(diào)用loBuildDeviceloControlRequest函數(shù)建立 IRP,filter-hook驅(qū)動(dòng)程序?qū)⑺璧膮?shù)傳入。其中一個(gè)為ip過濾驅(qū)程的設(shè)備對(duì)象,filter-hook驅(qū)程可以使用loGetDeviceObjectPointer函數(shù)。這時(shí),要將 ip過濾驅(qū)程的設(shè)備對(duì)象的名字作為參數(shù)傳入,還有SYNCHRONIZE ,GENERIC_READ 和GENERIC_WRITE。這些參數(shù)表明這三種訪問權(quán)限是必需的。如果調(diào)用成功,IoGetDeviceObjectPoi nter返回目標(biāo)設(shè)備對(duì)象和文件對(duì)象。Ip過濾驅(qū)動(dòng)程序的設(shè)備對(duì)象的名字需要使用Deviceipfilterdriver 的Uni code 字符串。然后使用loCallDriver函數(shù)提交IRP。PF_SET_EXTENSION_HOOK_INFO結(jié)構(gòu)的定義如下,其中包含回調(diào)函數(shù)的指針:typedef struct _PF_SET_EXTENSION_HOOK_INFOPacketF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45146-2024道路車輛氣壓及氣頂液制動(dòng)系統(tǒng)試驗(yàn)方法
- 北師大版八年級(jí)物理上冊(cè)《第一章物態(tài)及其變化》章末測(cè)試卷含答案
- 北師大版四年級(jí)上冊(cè)數(shù)學(xué)教案
- 農(nóng)業(yè)循環(huán)經(jīng)濟(jì)模式提升效益
- 能源大數(shù)據(jù)分析理論與實(shí)踐 課件 1.大數(shù)據(jù)概述
- 2024屆湖南省普通高中學(xué)高考仿真模擬化學(xué)試卷含解析
- 廈門市2024-2025學(xué)年度一學(xué)期高二年級(jí)質(zhì)量檢測(cè)數(shù)學(xué)試題(定稿)
- 2024高中地理第四章自然環(huán)境對(duì)人類活動(dòng)的影響2全球氣候變化對(duì)人類活動(dòng)的影響課時(shí)作業(yè)含解析湘教版必修1
- 2024高中生物第二章動(dòng)物與人體生命活動(dòng)的調(diào)節(jié)第4節(jié)免疫調(diào)節(jié)訓(xùn)練含解析新人教版必修3
- 2024高考?xì)v史一輪復(fù)習(xí)方案專題五當(dāng)今世界政治格局的多極化趨勢(shì)專題綜合測(cè)驗(yàn)含解析人民版
- 噪聲監(jiān)測(cè)服務(wù)投標(biāo)方案
- 2023年中考語文備考之名著閱讀《經(jīng)典常談》思維導(dǎo)圖合集
- 2023年湘教版數(shù)學(xué)七年級(jí)下冊(cè)《整式的乘法》單元質(zhì)量檢測(cè)(含答案)
- 氣柜安裝工程施工方案
- GB/T 28750-2012節(jié)能量測(cè)量和驗(yàn)證技術(shù)通則
- 分子生物學(xué)本基因組及基因組學(xué)概論
- 《人工智能》全冊(cè)配套課件
- 統(tǒng)編部編版四年級(jí)道德與法治下冊(cè)優(yōu)秀課件【全冊(cè)】
- 高職大?!扼w育與健康》課程標(biāo)準(zhǔn)
- 12月1日世界艾滋病日預(yù)防艾滋病講座PPT珍愛生命預(yù)防艾滋病PPT課件(帶內(nèi)容)
- 測(cè)量?jī)x器自檢記錄表(全站儀)
評(píng)論
0/150
提交評(píng)論