阅读:2570回复:19
怎么在NDIS HOOK DRIVER中复制ndis packet
大家好!
我试过一些方法,但总是在NdisAllocatePacketPool这一函数失败(机器重启)请问怎么在NDIS HOOK DRIVER中复制ndis packet, 应该在什么地方调用NdisAllocatePacketPool分配自己的PacketPool 谢谢! [编辑 - 5/31/05 by tanm2000] |
|
沙发#
发布于:2005-06-21 11:11
搞定了,原来是没有更新IP包头中的IP包总长度!谢谢各位的支持!
|
|
板凳#
发布于:2005-06-20 13:23
eternal可以看到以太网桢的,上面显示的就是CRC出错,不是IP checksum这个我确定!IPchecksum是正确的。
|
|
地板#
发布于:2005-06-19 21:39
framde的crc是网卡硬件加上去的,ethereal仅仅是个协议驱动程序,只能看到网卡驱动NdisIndicatexx往上传的数据包,根本看不到这个crc。是不是ip的校验和不对。是不是和NDIS_TASK_OFFLOAD有关系?
|
|
地下室#
发布于:2005-06-19 18:45
我用ethereal,截的包!
|
|
5楼#
发布于:2005-06-19 08:55
你是如何知道crc出错的? crc一般是硬件加上去的,和上层协议的处理肯定没有关系.
|
|
6楼#
发布于:2005-06-18 19:53
不可以动态加载!
我现在在NDIS PACKET中又加了个IP包头,但加上后 以太桢的CRC出错,不知道这是为什么啊,CRC是硬件加上去的吧,为什么会出错! |
|
7楼#
发布于:2005-06-09 13:05
谢谢,我试试
|
|
8楼#
发布于:2005-06-09 13:01
softice如何在启动时设置断点啊? 把你的驱动的symbols加到启动就加载,你在NdisAllocatePoolEx前加个DbgBreakPoint吧。 或者Ctrl+D尽早的进入softice,设置断点都可以。 |
|
9楼#
发布于:2005-06-09 12:57
softice如何在启动时设置断点啊?
|
|
10楼#
发布于:2005-06-09 12:22
会的 建议用softice boot启动,调试你的驱动,在NdisAllocatePacketPoolEx设置个断点,跟踪一下,是不是执行这个函数,马上出问题 |
|
11楼#
发布于:2005-06-09 12:19
会的 你的驱动可以动态加载吗? |
|
12楼#
发布于:2005-06-09 12:02
会的
!analyze -v 但如果机器在login前重启 就没有转储数据! |
|
13楼#
发布于:2005-06-09 10:28
你如何确定是这个函数出的错? 会用windbg分析转储数据吗?我没有用ice做过远程调试,帮助里有吧。 |
|
14楼#
发布于:2005-06-09 10:15
你如何确定是这个函数出的错?
在这个函数设个断点,跟踪一下,有转储文件吗?可以分析一下 我一般用ice调试,用windbg分析转储。 这个函数出问题没有道理 当注释掉这个函数时,机器就可以启动。 我现在只能分析DUMP内存数据,并且还是在系统启动后! 请问如果配置softice用串口进行远程调试? 谢谢!!! |
|
15楼#
发布于:2005-06-07 16:50
我用的是windbg,但机器在login前就重启了,所以我也不知道是哪句汇编出的错,但肯定是NdisAllocatePacketPoolEX出错! 你如何确定是这个函数出的错? 在这个函数设个断点,跟踪一下,有转储文件吗?可以分析一下 我一般用ice调试,用windbg分析转储。 这个函数出问题没有道理 |
|
16楼#
发布于:2005-06-07 14:52
我用的是windbg,但机器在login前就重启了,所以我也不知道是哪句汇编出的错,但肯定是NdisAllocatePacketPoolEX出错!
代码如下: NDIS_HANDLE myOwnPacketPool; NDIS_STATUS Status = NDIS_STATUS_SUCCESS NdisAllocatePacketPoolEx(&Status,&myOwnPacketPool,MIN_PACKET_POOL_SIZE, MAX_PACKET_POOL_SIZE - MIN_PACKET_POOL_SIZE, PROTOCOL_RESERVED_SIZE_IN_PACKET); |
|
17楼#
发布于:2005-06-02 22:11
谢谢你的回复! 从理论上讲从哪调用应该没有太大关系,因为这个函数主要就是分配一快内存。 softice可以截住吗,那一句汇编代码产生的错误?什么错误? 你也可以学习用windbg看看dmp文件,来分析问题出在哪? |
|
18楼#
发布于:2005-06-02 13:05
谢谢你的回复!
我用的是HOOK driver,注册假协议的方法。 我试过在NdisOpenAdapter前和后调用NdisAllocatePacketPool但都不行。我知道如果是IM driver的话应该在PtBingAdpater里调用 ,但我不明白HOOK driver应该在什么地方调用。 |
|
19楼#
发布于:2005-05-31 13:58
你用的是imd还是hook?如果是hook,注册一个假协议的方法?
NdisAllocatePacketPool是一个基本的操作,可以在<=DPC上操作,主要就是分配一块内存,一般都不会有问题。 你是在什么时候调用的,异常softice截住了吗? 报的什么错误?把问题说的详细一些,帮你分析分析 |
|