阅读:2353回复:1
win2000下的PNDIS_OPEN_BLOCK数据结构问题
我在win2000先碰到一个奇怪的问题,我hook了PNDIS_OPEN_BLOCK数据结构中SendCompleteHandler函数,结果发现在调用SendPacketsHandler函数返回Pending的情况下,就是不会在我hook了SendCompleteHandler函数里面拦截不到。而当我调用SendPacketsHandler发送自己的数据包时,系统挂了,看了一下发现是在释放我自己构造的数据包内存里,再一看是在tcpip里面的sendcomplete里面释放内存导致的,看了一下tcpip!sendcomplete的地址,居然和我在PNDIS_OPEN_BLOCK数据结构中的不一样,到此可以说是因为我hook了错误的sendcomplete函数地址,导致后面的错误。
我不明白的是为什么我在PNDIS_OPEN_BLOCK数据结构中得到的sendcomplete函数地址是错误的?我需要怎么样才能得到正确的地址呢? |
|
|
沙发#
发布于:2010-12-30 09:37
回 楼主(zzq191) 的帖子
NDIS_OPEN_BLOCK结构在各个版本系统中有差别。可以张贴关键代码处理┌───────┬───────┐ │ OS Version │ NDIS Version │ ├───────┼───────┤ │ Win95 │ 3.1 │ │ Win95 OSR2 │ 4.0 │ │ Win98 │ 4.1 │ │ Win98 SE │ 5.0 │ │ WinMe │ 5.0 │ │ WinNT 3.5 │ 3.0 │ │ WinNT 4.0 │ 4.0 │ │ WinNT 4.0 SP3│ 4.1 │ │ Win2K │ 5.0 │ │ WinXP │ 5.1 │ │ WinVista │ 6.0 │ └───────┴───────┘ |
|
|