首页
社区
课程
招聘
[求助]如何通过PNDIS_PACKET结构定位TCP头?
发表于: 2012-5-21 11:47 5121

[求助]如何通过PNDIS_PACKET结构定位TCP头?

2012-5-21 11:47
5121
如题。
对NDIS包的结构不是很熟悉。
PNDIS_PACKET
typedef struct _NDIS_PACKET {
  [COLOR="Sienna"]NDIS_PACKET_PRIVATE[/COLOR] [I]Private[/I];
  __MINGW_EXTENSION union {
    __MINGW_EXTENSION struct {
      UCHAR MiniportReserved[2 * sizeof(PVOID)];
      UCHAR WrapperReserved[2 * sizeof(PVOID)];
    };
    __MINGW_EXTENSION struct {
      UCHAR MiniportReservedEx[3 * sizeof(PVOID)];
      UCHAR WrapperReservedEx[sizeof(PVOID)];
    };
    __MINGW_EXTENSION struct {
      UCHAR MacReserved[4 * sizeof(PVOID)];
    };
  };
  ULONG_PTR Reserved[2];
  UCHAR ProtocolReserved[1];
} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET;

NDIS_PACKET_PRIVATE
typedef struct _NDIS_PACKET_PRIVATE {
  UINT PhysicalCount;
  UINT TotalLength;
  PNDIS_BUFFER Head;
  PNDIS_BUFFER Tail;
  PNDIS_PACKET_POOL Pool;
  UINT Count;
  ULONG Flags;
  BOOLEAN ValidCounts;
  UCHAR NdisPacketFlags;
  USHORT NdisPacketOobOffset;
} NDIS_PACKET_PRIVATE, *PNDIS_PACKET_PRIVATE;


取得IP头的代码:
#define IP_OFFSET 0x0e
PIP_HEADER pIPHeader = (PIP_HEADER)(pPacketContent + IP_OFFSET);


是不是也有TCP_OFFSET的?偏移量是多少呢?或者其他方式进行获取?望大侠赐教,不胜感激!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 203
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
izc
2
定位TCP头啊,各种头疼。
2012-5-21 19:08
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
貌似应该换算成缓冲区 然后按照以太包的格式来解 以太包->IP包->TCP包
2012-5-21 19:20
0
雪    币: 203
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
izc
4
   现在关键是不熟悉结构是什么个样子呀?
2012-5-21 20:24
0
雪    币: 40
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
用 wireshark抓个tcp包看看就行了
2012-5-21 20:44
0
雪    币: 203
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
izc
6
嘿嘿,在安焦找到答案了,谢谢楼上两位看雪同仁!
2012-5-21 20:49
0
游客
登录 | 注册 方可回帖
返回
//