会员名称:  密码:   验证码:     会员注册  忘记密码? 
设为首页
加入收藏
返回首页
媒体资讯>> 业界资讯 - 会展动态 - 竞赛&活动 - IT互联网  媒体学院>> 图形图像 - 网页制作 - 网络编程 - 数据库 - 服务器 - 网络应用  作品赏析>> 视频音响 - CG动画 - UI设计 - 平面设计 - 网页设计 - 摄影映象 - 三维2D - 其它设计  媒体工作室>> 视频影像 - 音频声响 - 三维2D - 平面视觉 - 软硬技术 - 摄影映象  人物访谈>> 人物访谈 - 华夏新锐  媒体杂志>> 媒体杂志  素材图库>> 丽景佳图 - 设计素材 - 资料图库 - 矢量图库 - 动态动画 - 特色图标  酷站赏析>> 韩国网站 - 国外网站 - 国内网站  会员中心>> 会员注册 - 会员登陆
当前位置:华夏媒体 - > 媒体学院 - > 网络应用 - > 网络知识 - > sniffer技术原理及应用(1)
   
   
   
sniffer技术原理及应用(1) sniffer技术原...  [网络...]
More... 
   
网络协议X档案全集(十) 网络协议X档案...  [其它...]
不可忽视的BIOS参数设置 不可忽视的BIO...  [其它...]
微软IE浏览器非常规修改全攻略(上) 微软IE浏览器非...  [其它...]
微软IE浏览器非常规修改全攻略(下) 微软IE浏览器非...  [其它...]
网管十招 网管十招  [其它...]
微软安全问题 源自OS和IE中集成RSS 微软安全问题 ...  [其它...]
修改注册表使电脑更安全 修改注册表使电...  [其它...]
利用注册表管理IP地址 利用注册表管理...  [其它...]
有关IIS HACK的一些方法整理 有关IIS HACK的...  [其它...]
More 
sniffer技术原理及应用(1)
编辑:华夏媒体     作者:未知     来源:网络     时间:2006-07-29     总浏览量:1530
文字大小:[      ]     文字颜色:      双击滚屏/单击停止

[上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [下一页] 



PF_SET_EXTENSION_HOOK_INFO filterData;

KEVENT event;
IO_STATUS_BLOCK ioStatus;
PIRP irp;

//首先获得一个设备指针。
//first of all, we have to get a pointer to IpFilterDriver Device
RtlInitUnicodeString(&filterName, DD_IPFLTRDRVR_DEVICE_NAME);
status = IoGetDeviceObjectPointer(&filterName,STANDARD_RIGHTS_ALL,

&ipFileObject, &ipDeviceObject);
if(NT_SUCCESS(status))
{
//一些初始化工作,填充filterData。
  //initialize the struct with functions parameters
  filterData.ExtensionPointer = filterFunction;

  //we need initialize the event used later by the IpFilterDriver to

signal us
  //when it finished its work
  KeInitializeEvent(&event, NotificationEvent, FALSE);

//这个就是最重要的注册回调函数过程。DDK中具体讲述是这样的
//IOCTL_PF_SET_EXTENSION_POINTER registers filter-hook callback functions to

the IP filter driver
//to inform the IP filter driver to call those filter hook callbacks for every IP packet
//that is received or transmitted. Also, IOCTL_PF_SET_EXTENSION_POINTER

clears filter-hook
//callback functions from the IP filter driver. (看到了吧,最后一句话,注册新的回调函

数,就将原先的清除掉了,
//所以说系统中只存在一个这样的驱动有用。)
  //we build the irp needed to establish fitler function这个地方仅

仅是生成这样的IRP,并没有注册
  irp =

IoBuildDeviceIoControlRequest(IOCTL_PF_SET_EXTENSION_POINTER,
           

     ipDeviceObject,
         

  (PVOID) &filterData,
         

  sizeof(PF_SET_EXTENSION_HOOK_INFO),
         

  NULL,
         

  0,
         

  FALSE,
         

  &event,
         

  &ioStatus);


  if(irp != NULL)
  {
   // we send the IRP
   //这个地方才是真正的注册呀。
   status = IoCallDriver(ipDeviceObject, irp);

   //and finally, we wait for "acknowledge" of

IpDriverFilter
   if (status == STATUS_PENDING)
   {
    waitStatus = KeWaitForSingleObject(&event,

Executive, KernelMode, FALSE, NULL);

    if (waitStatus  != STATUS_SUCCESS )

{}
   }

   status = ioStatus.Status;

   if(!NT_SUCCESS(status)){}
  }
  
  else
  {
   //if we cant allocate the space, we return the


[上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [下一页] 

打印   收藏   关闭   至顶部  


关于我们 | 联系我们 | 合作伙伴 | 站点地图 | 免责声明 | 版权声明 | 意见建议
版权所有  Copyright © 2005-2006 华夏媒体(Media86.Com). All Rights Reserved .
网站备案号:粤ICP备06055307号