日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译) (转)

發(fā)布時(shí)間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译) (转) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
過濾鉤子驅(qū)動程序一(微軟DDK文檔,FLASHSKY翻譯) (轉(zhuǎn))[@more@]

本章說明過濾鉤子驅(qū)動程序. 一個(gè)過濾鉤子驅(qū)動程序是用于操作系統(tǒng)中的一個(gè)IP過濾驅(qū)動程序的上下文
中處理或過濾網(wǎng)絡(luò)包,過濾鉤子驅(qū)動程序擴(kuò)展了IP過濾驅(qū)動程序的功能。下面主題描述了過濾鉤子驅(qū)動程序
的一些特性, 解釋怎樣建立過濾鉤子并列出實(shí)現(xiàn)一個(gè)過濾鉤子驅(qū)動程序相關(guān)的輸入輸出控制代碼函數(shù)的參考
信息:
  1.1 關(guān)于過濾鉤子驅(qū)動程序
 ? 一個(gè)過濾鉤子驅(qū)動程序是一個(gè)用于過濾網(wǎng)絡(luò)包的核心模式驅(qū)動程序. 一個(gè)過濾鉤子驅(qū)動程序擴(kuò)展系統(tǒng)提
供的IP過濾驅(qū)動程序的功能。一個(gè)過濾鉤子驅(qū)動程序僅僅只能安裝于2000及其之后的系統(tǒng)上。僅僅只有一個(gè)
過濾鉤子驅(qū)動程序能被安裝在系統(tǒng)之上并且被IP過濾驅(qū)動程序使用。如果一個(gè)過濾鉤子驅(qū)動程序的指向用于
IP過濾驅(qū)動程序的擴(kuò)展鉤子指針為空,那么他只能使用IP過濾驅(qū)動程序注冊自己。一旦一個(gè)過濾鉤子驅(qū)動程
序使用了IP過濾驅(qū)動程序注冊自己,IP過濾程序給這個(gè)IP過濾程序的擴(kuò)展鉤子分派文件對象,用這種方法,
這個(gè)IP過濾驅(qū)動程序確保自己只能接受和使用單個(gè)的過濾鉤子驅(qū)動程序.

  1.2 建立一個(gè)過濾鉤子驅(qū)動程序
 ? 一個(gè)過濾鉤子驅(qū)動程序在包過濾api不能滿足過濾網(wǎng)絡(luò)包時(shí)候來建立。用戶模式應(yīng)用程序使用這些API來
建立和管理系統(tǒng)在IP過濾驅(qū)動程序中提供的輸出和輸入過濾器。更多API信息查看SDK。
 ? 一個(gè)過濾鉤子驅(qū)動程序是在核心模式驅(qū)動程序下開發(fā)的. 另外, 一個(gè)過濾鉤子驅(qū)動程序完成一個(gè)過濾鉤
子回調(diào)函數(shù)并在系統(tǒng)提供的IP過濾驅(qū)動程序中注冊這個(gè)回調(diào)函數(shù). 這個(gè)回調(diào)函數(shù)被看作一個(gè)過濾鉤子。這個(gè)
IP過濾驅(qū)動程序以后使用這個(gè)過濾鉤子以決定怎樣處理到達(dá)和輸出的包.

 ? 下面的章節(jié)將說明怎樣建立一個(gè)過濾鉤子驅(qū)動程序
  1.2.1 建立過濾鉤子
 ? 一個(gè)過濾鉤子在執(zhí)行一個(gè)PacketFilterExtensionPtr類型的函數(shù)時(shí)被建立。
 ? 當(dāng)一個(gè)過濾鉤子驅(qū)動程序在系統(tǒng)提供的IP過濾驅(qū)動程序中注冊自己的過濾鉤子實(shí)體指針時(shí) ,這個(gè)過濾鉤子
驅(qū)動程序給他的過濾鉤子提供符號地址. 因?yàn)橐粋€(gè)過濾鉤子驅(qū)動程序提供這個(gè)地址, 而不是名字,這個(gè)過濾鉤
子可以選擇任何名字。當(dāng)然,好的程序習(xí)慣是用其基本的功能來命名這個(gè)過濾鉤子的名字。
 ? 一個(gè)過濾鉤子對到達(dá)與發(fā)出的包進(jìn)行特定的動作,他將與IP過濾驅(qū)動程序發(fā)送給過濾鉤子來檢查怎樣的包
將進(jìn)一步處理的信息與到達(dá)的特定信息做比較。在過濾鉤子檢查包以后,他將使用PF_FORWARD, PF_DROP, 或
PF_PASS返回響應(yīng)代碼給IP過濾驅(qū)動程序怎樣處理的信息:
  PF_FORWARD
  規(guī)定給IP過濾驅(qū)動程序馬上返回轉(zhuǎn)發(fā)響應(yīng)給IP棧. 對于本地包, IP轉(zhuǎn)發(fā)他們到棧頂. 如果包目標(biāo)地址為外
部機(jī)器并且路由允許, IP路由他們到對應(yīng)的路由.
  PF_DROP
  規(guī)定給IP過濾驅(qū)動程序馬上返回drop響應(yīng)給IP棧. IP將drop這個(gè)包.
  PF_PASS
 ? 規(guī)定給IP過濾驅(qū)動程序過濾這個(gè)包并且返回這個(gè)結(jié)果響應(yīng)給IP棧. IP過濾驅(qū)動程序怎樣處理這個(gè)過濾包決
定于他怎樣在Packet Filtering API中做的設(shè)置. 過濾鉤子如果他檢查到他不能處理的包但將允許IP過濾驅(qū)動
程序過濾包的時(shí)候返回這個(gè)pass響應(yīng)。

  1.2.2 過濾鉤子例子
 ? 本節(jié)顯示了一個(gè)簡單的過濾鉤子基于某幾個(gè)固定的包屬性來構(gòu)成forward和drop檢查. 這個(gè)過濾鉤子指定
drop TCP包而forward其他協(xié)議的包.
 ? 注意:如果特定IP地址或TCP/UDP端口的包必須被過濾,考慮使用包過濾API替代建立一個(gè)用戶模式的應(yīng)用
程序。這些API優(yōu)化了系統(tǒng)提供的IP過濾驅(qū)動程序處理包而不需要在其上關(guān)聯(lián)一個(gè)過濾鉤子驅(qū)動程序.
?
  #define PROT_TCP  6
  // Drop all TCP packets
  PF_FORWARD_ACTION
  DropTcpPackets(
    unsigned char  *PacketHeader,
    unsigned char  *Packet,
    unsigned int  PacketLength,
    unsigned int  RecvInterfaceIndex,
    unsigned int  SendInterfaceIndex,
   ? IPAddr    ? RecvLinkNextHop,
   ? IPAddr    ? SendLinkNextHop
    )
  {
  if (PacketHeader->iph_protocol == PROT_TCP)
  {
    return PF_DROP;
  }
  return PF_FORWARD;
 }

?


來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/10748419/viewspace-1000280/,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任。

轉(zhuǎn)載于:http://blog.itpub.net/10748419/viewspace-1000280/

總結(jié)

以上是生活随笔為你收集整理的过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译) (转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。