协议驱动的真谛:协议驱动上层提供直接供应用层的Socket使用的数据传输接口,下层则绑定小端口,用于发送和接受以太网包
首先谈谈我开始对协议驱动的错误认识,一开始我以为协议驱动只是对数据进行收发,也就是认为HOOK驱动,后来调“错”(其实是不理解的逻辑错误,并非程序错误),打开网站int3,Dbgprint和F9都试过了,封包就是未到
关键错误就错在对协议驱动这个4个字并未理解,协议驱动,何谓协议,何谓驱动,协议就是一组自定义的协议,和TCP/IP并没有关系,TCP/IP本身就是一组协议,而自己写一个也是一组协议,只是比较简单罢了,这就可以说明为什么打开网站等网络操作,断点一个都不来,原因很简单,因为应用层并没有用你得协议,而是用的TCP/IP协议,这也就是一个小白对协议驱动新认识的过程,驱动就不解释了
对驱动的认识:
1.注册协议,就是填写回调函数
2.协议与网卡绑定(分配空间,获取网卡一切信息,防线程并发执行加锁,保存各种信息)
3.OID请求的发送和请求完成回调(比如获得网卡MAC地址,网卡帧长等)
4.用户态调用协议驱动的接口
5.内核态对用户态的请求进行分发和处理