RodYang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  驱动开发

该文被密码保护。
posted @ 2013-08-15 21:52 RodYang 阅读(0) 评论(0) 推荐(0)

摘要:在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是:l应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存)l由驱动程序分配内存页,并映射这些内存页到指定用户模式进程的地址空间,并且将地址返回给应用程序。(驱动程序分配共享内存)使用IOCTL共享Buffer:使用一个IOCT描述的Buffer,在驱动和用户程序间共享内存是内存共享最简单的实现形式。毕竟,IOCTL也是驱动支持其他I/O请求最经典的方法。应用程序调用Win32函数DeviceIoControl(),要被共享的Buffer的基地址和长度 阅读全文
posted @ 2013-08-15 20:11 RodYang 阅读(2031) 评论(0) 推荐(0)

摘要:做ndishook的时候,自定义了一个数据包,包结构应该没有问题,填充NDIS_PACKET结构是这样的,先初始化:NdisAllocatePacketPool(&nStatus,&m_hMyPacketPool,0xFFF,0x10);NdisAllocateBufferPool(&nStatus,&m_hMyBufferPool,0x10);NdisAllocateMemoryWithTag(&m_pBuffer,MAX_PACKET_SIZE,'NAMW');NdisAllocateBuffer(&nStatus,& 阅读全文
posted @ 2013-08-14 16:51 RodYang 阅读(2040) 评论(0) 推荐(0)

该文被密码保护。
posted @ 2013-08-13 21:49 RodYang 阅读(4) 评论(0) 推荐(0)

摘要:// // NDIS_PACKET结构的定义 // typedef struct _NDIS_PACKET { NDIS_PACKET_PRIVATE Private; //这个其实是一个链表结构,Private.Head指向第一个链表,Private.Tail指向最后一个 //以下有关于这个结构的解释 union { struct // For Connection-less miniports { UCHAR MiniportReserved[2*sizeof(PVOID)]; UCHAR WrapperReserved[2*sizeof(PVOID)]; ... 阅读全文
posted @ 2013-08-13 18:01 RodYang 阅读(744) 评论(0) 推荐(0)

摘要:一、前言二、IMD中间层技术介绍三、passthru例程分析四、部分演示代码五、驱动编译与安装六. 总结一、前言前段时间,在安全焦点上看到了TOo2y朋友写的《基于SPI的数据报过滤原理与实现》,很是不错。文章中提到的基于SPI的数据报拦截技术是在用户级的。用户级的拦截有其优势,实现方便、便于移植、通用性强,但是,用户级并不能得到所有的数据报。本文提到的基于IMD的数据报过滤则是属于内核级的,它建立在网络驱动上面。其实两个月前就想写这篇文章了,可惜这个技术是我一年前做的,好久不用,已经忘的差不多了,所以一直没有写。不过,近来正巧有个课题,牵扯到了中间层驱动。于是,重新拾起丢了有一年的DDK,啃 阅读全文
posted @ 2013-07-30 22:32 RodYang 阅读(914) 评论(0) 推荐(0)

摘要:基于PassThru的NDIS中间层驱动程序扩展独孤求真概要:开发一个NDIS驱动是一项相对复杂的工作,这一方面是由于核心驱动本身有更多的限制和要求,有更多的“游戏规则”要求开发者理解和掌握,NDIS的复杂性把难度更是提高了,本文以PassThru为例,加上自己的理解,讲述了NDIS驱动的处理过程和在PassThru的基础上进行扩展的基本方法,本文并不是一个入门读物,所以没有提及任何核心驱动开发的相关知识,本文主要讲述的是NDIS中间层对数据包处理的流程。在阅读过程中,关于相关API的用法,或其它信息,请参看DDK文档。一NDIS驱动程序分类.NDIS(Network Driver Inter 阅读全文
posted @ 2013-07-30 22:31 RodYang 阅读(1121) 评论(0) 推荐(0)

摘要:[作者]猪头三个人网站 :http://www.x86asm.com/[序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风.[贡献者]1> defddr看雪学院2> StudyRush看雪学院[本内容适用环境及工具]1> Windows系统下2> VS2003版本以 阅读全文
posted @ 2013-07-28 15:45 RodYang 阅读(561) 评论(0) 推荐(0)

摘要:这几天对NDIS的学习,基本思路是:首先熟悉理论知识→然后下载一个例子进行研究→最后例子自己模仿扩展→最最后尝试自己写一个新的。Passthru是微软NDIS自己写的一个框架驱动,NDIS开发者可以在此框架上进行扩展,做二次开发。NDIS提供一些基本操作函数,Passthru里的函数就是使用的这些基本函数做成的一个网络驱动。基于Passthru的扩展就是自己在此驱动的基础上在封装一次,比如说为MyPassthru,将NDIS里面的函数封装在自己自定义函数里,方便外界调用。最主要的函数就是NDIS里面的PtReceive或PtReceivePacket(负责网络封包的接收) ,MPSend或MP 阅读全文
posted @ 2013-07-28 15:43 RodYang 阅读(838) 评论(0) 推荐(0)

摘要:闲言:这个月一直在学习NDIS驱动编程,杂七杂八的资料都看个遍了,做了点笔记,捋捋思路,发上来备忘。Ps:只是小菜的一点学习笔记,没什么技术含量,不过版主如果觉得对大家稍微有点帮助的话,嘿嘿,你懂的...主题:由于NDIS架构本身相对比较复杂,有着比其他过滤驱动更多的"游戏规则"需要开发者耐心地学习和理解。所以NDIS驱动开发起来略显繁琐,不过也不必畏惧,多看多写,熟悉后便豁然开朗了。本文以寒江独钓的passthru为例,详细讲解开发一个基于NDIS中间层驱动的封包过滤驱动的原理和流程。由于笔者初学驱动,水平有限,失误之处还请大虾不啬赐教。1.[前置知识]所有网络通信最终必 阅读全文
posted @ 2013-07-28 15:30 RodYang 阅读(3915) 评论(0) 推荐(0)