RodYang

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

2013年8月15日

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

2013年8月14日

摘要: 做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 阅读(1073) 评论(0) 推荐(0) 编辑

2013年8月13日

该文被密码保护。 阅读全文
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 阅读(698) 评论(0) 推荐(0) 编辑

2013年8月6日

摘要: Author :JeffreyMy Blog:http://blog.csdn.net/gueter/引言HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POS 阅读全文
posted @ 2013-08-06 14:43 RodYang 阅读(306) 评论(0) 推荐(0) 编辑

2013年8月5日

摘要: 学习NDIS一段时间了,不过还是毫无头绪,理论都能明白,可是不知道怎么下手去做,网上没有没有太详细的教程。我是比较笨,而且比较懒的。:) 所以准备暂缓NDIS网络和驱动方面的学习,等今后遇见师父了再请教之,好运~ NDIS中的网络数据都是原始的,即没有经过主机协议栈处理的网络数据,如果学习网络协议的话,我觉得研究原始数据包还是挺合适的。 Socket通信中,主机A与主机B之间通信,Socket接收到的内容都是通信的内容,没有附带主机A或主机B的信息,这点可以回想最开始学习Socket编程的时候,主机A发送“Hello,mydearfriend.”,那么主机B收到的确实是“Hello,m... 阅读全文
posted @ 2013-08-05 13:01 RodYang 阅读(1428) 评论(0) 推荐(0) 编辑

2013年8月2日

摘要: 1、算法思路: IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算IP数据包的校验和。应该按如下步骤: (1)把IP数据包的校验和字段置为0; (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和; (3)把得到的结果存入校验和字段中。 在接收数据时,计算数据包的校验和相对简单,按如下步骤: (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段; (2)检查计算出的校验和的结果是否等于零(反码应为16个0); (3)如果等于零,说明被整除,校验是和正确。否则,校验和就是错误的,协议... 阅读全文
posted @ 2013-08-02 07:12 RodYang 阅读(2600) 评论(0) 推荐(0) 编辑

2013年7月30日

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

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

2013年7月28日

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