当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: ○、序 这篇文章写于1年前,因为某些原因,没有把它完成。
 

 

 ·从subsystem开始概述nt内核     »显示摘要«
    摘要:什么是subsystem?nt架构(windows nt、windows xp、windows 2003)的初始设计是很有野心的,它希望在nt上可以不加修改地运行os2、unix程序。所以在nt中有subsystem的概念,每个subsystem针对一个平台,ntdll.dll是所有subsystem的基础。或者说ntdll.dll统一提供nt系统的api接口,subsystem为各个平台的应用程......
 ·可在运行时编辑的加速键表     »显示摘要«
    摘要:  ***简 介***  本文首先简要介绍了一下windows中的几个与加速键表有关的api函数及结构。然后对在win32位程序中实现加速键表进行了探讨,分别就api下的程序设计及mfc下的程序设计进行了叙述。  对于运行时可编辑的加速键表仅在mfc下进行了详细描述。包括其实现原理,并引导大家建立了一个用于编辑加速键的对话框,含详细的代码。关于在api下实现运行时的可编辑加速键表不再叙述,可参考m......


Sniffer 实现之 用 Raw Socket 实现 Sniffer(2)

○.序

一.引言 【程序编程相关:SOCK4&SOCK5

  这篇文章写于1年前,因为某些原因,没有把它完成.今天整理一下 shadowstars home,偶然发现这篇未完的文章.虽是年前的东西,但现在仍没有过时,对想了解 sniffer 的朋友应该有所帮助.爸爸说做事情要有始有终,今天是端午节,谨以此文给远隔千里的亲人送一份心意. 【推荐阅读:VC中借助内嵌资源实现Flash动画播放

  幸运的是有一套 winpcap 的东东,专门用来在 win32 平台下抓包的,可以在 http://winpcap.polito.it 上下载到.而且接口基本上与微软的 packet 是一样的.哈哈,这下好了,原来的代码还可以用,一试就灵!下面就介绍怎样利用 winpcap 直接对网卡进行操作及对接收到的数据进行分析. 【扩展信息:C++远程关机API的学习经历

  上一次介绍了用 raw socket 实现 sniffer 的方法,实现起来比较简单,但有个缺点就是只能截获 ip 层以上的包,数据包头不含帧信息.对一些特殊的要求就不能满足了,其中很重要的一条就是不能对 arp 包进行处理.用 ndis 驱动程序可以实现对整个以太网包的截获,但复杂的驱动程序让好多人望而却步.没关系,有现成的东西干嘛不好好利用呢?在微软的 ddk 里提供了一个 packet 的例子,packet.sys 可以对网卡进行任意的操作,packete32.dll 提供给应用程序一个方便的接口,而与驱动程序通讯相关的复杂的内部操作由 dll 完成,面向应用层的程序员不需要了解这些细节.可惜我按 packet32.dll 的提供的接口一步一步的做下去,却总也得不到想要的结果,一抓包就死在那儿不动了.看来它是不想给我干活了:(还是不想自已写驱动程序……

二.windows 系统中的网络通信结构

1.windows 系统中的网络通信结构

  图1的上层应用程序包括 ie.outlook 等各种基于网络的软件,网络驱动协议包括 tcp/ip.netbeui 等各种 windows 支持的网络层.传输层协议,ndis 是 windows 操作系统网络功能驱动的关键部分,下面对 ndis 进行介绍.

2.ndis及其特点

  ndis(network driver interface specification) 是 microsoft 与 3com 公司联合制定的网络驱动规范,并提供了大量的操作函数.它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别.

  ndis 向上支持多种网络协议,比如 tcp/ip.nwlink ipx/spx.netbeui 等,向下支持不同厂家生产的多种网卡.ndis 还支持多种工作模式,支持多处理器,提供一个完备的 ndis 库(library). 但库中所提供的各个函数都是工作在核心模式下的,用户不宜直接操作,这就需要寻找另外的接口.

三.winpcap 简介

1. winpcap结构图

2. winpcap 包括三个部分

第一个模块npf(netgroup packet filter),是一个虚拟设备驱动程序文件.它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码. 第二个模块packet.dll为win32平台提供了一个公共的接口.不同版本的windows系统都有自己的内核模块与用户层模块.packet.dll用于解决这些不同.
...   下一页
    摘要: word wversion=makeword(2,0); wsadata wsdata; int nresult= wsastartup(wversion,&wsdata); if(nresult !=0) { messagebox("版本不对","ok",mb_ok); return; } socket sock=socket(af_inet,s......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE