我已经用HOOK截获wsock32.dll的recv(),但截来的有用的数据都是一堆堆的数据包,如何分析这些数据包呢?
解决方案 »
- 求助,发生abnormal program termination错误
- 请教高手:BCG中的CBCGPDockingControlBar类的窗体如何能够实现全屏显示???
- 奇怪的问题!用photoshop和vc中设置同样的字体为什么出来的效果不一样呢?
- [请教]……
- 为什么要注册窗口类呢?
- 很奇怪的问题
- 再问:如何能最最简单的方法显示一张图片,能看见图片就成。
- 调用COM组件的问题(火急),好像是自己定义的一个结构体的问题
- 小女求助 #include 问题,可以让a.h 和 b.h 的函数互相调用吗?
- 怎样把数字7转换为字符串的"7"?
- 请问以下 Z order 是什么意思啊??
- 我在窗口里加了一个EDIT控件并用一个变量控制他的内容但我用语\n怎么也换不了行
主要有tcp,udp等
[email protected],交流!:)
我也没看明白,关注中 ...
sa
protcal ---udp,tcp
header of cdp/tcp
data - you send/recv
{
__u8 h_lenver;//4位首部长度+4位IP版本号
__u8 tos;//8位服务类型TOS
__u16 tot_len;//16位总长度(字节)
__u16 id;//16位标识
__u16 frag_off;//3位标志位
__u8 ttl;//8位生存时间 TTL
__u8 protocol;//8位协议 (TCP, UDP 或其他)
__u16 check;//16位IP首部校验和
__u32 saddr;//32位源IP地址
__u32 daddr;//32位目的IP地址
}IP_HEADER;
typedef struct _TCP_HEADER
{
__u16 source;//16位源端口
__u16 dest;//16位目的端口
__u32 seq;//32位序列号
__u32 ack_seq;//32位确认号
__u8 th_lenres;//4位首部长度/6位保留字
__u8 th_flag;//6位标志位
__u16 window;//16位窗口大小
__u16 check;//16位校验和
__u16 urg_ptr;//16位紧急数据偏移量
}TCP_HEADER;
//then you can consult codeguru "ipmon" example...
我从recv(int,char * buf,...)得到了buf中的数据,如何用代码分析出来呢?
最重要的是积累,先看看Sniffer或NetXRay里面的东西,可以慢慢做下来的。不要一下子就想处理所有Packet
我也做过API HOOK,但是怎么也钩不上网络函数,如WS2_32.DLL中的send()。
其它函数还没试过。望指教。
user32.dll,gdi32.dll中的函数我都钩过,但是不知道为什么,钩不上sw2_32.dll中的函数。我用的系统是Win2000。对于你的问题我是这样看的,如果你截获的对的话,那么你得到的被填充的
缓冲区里应该就是recv接收到的数据。如果你接收到的是乱码,那么recv的
调用者得到的也应该是乱码。原调用者(被截获者)得到的是乱码吗?有一种可能的情况就是你自己的buf没有被正确填充,甚至是没有被填充,
可以调试比较一下。buf 是 char FAR * 类型的。至于TCP/IP协议内容中的协议类型、端口号、IP地址等等,我想大概不会在
buf中,它应该在SOCKET结构中,所以不用去管TCP/IP协议。recv这些网络
函数已经是协议层之上的API函数了,它已经把TCP/IP协议解析了。我想是
这样的。也可能不是这样,我不是很自信,只供参考。
recv到的是乱码很正常,因为都是二进制数据。
然后再重新编译呢?因为要保证系统还要正常运行吗。