我想编个程序来截取某指定程序的数据包,搜索一下,找到以下方法:将原来的DLL库改名(如将WINSOCK库WSOCK32.DLL改为A.DLL), 新建一个DLL库,WSOCKET32.DLL,在新的DLL库中调用旧的DLL库。 自定义的wsock32.dll可以设计成在程序调用他的过程中将要发送的数据保存下来,但现在我怎么把这个保存了数据从自定义的wsock32.dll中提取出来,就是说怎么把截到的数据传递给我编的程序,然后加以分析?

解决方案 »

  1.   

    建一个命名管道,在你的wsock32.dll中写,你编写的程序中读。
    CreateNamedPipe().
      

  2.   

    我如果在自定义的wsock32.dll中加插1个函数c供A程序调用(A是我编的程序,B是被截取的程序),那么当b调用自定义的wsock32.dll中的send()时所保存下的数据时,可以传给同在一个dll内的函数c,从而使调用函数c的程序A得到这个数据吗?
      

  3.   

    你可以发消息嘛。或者用共享内存。
    你说的那个办法可能不行,我觉得B进程空间里的wsock32和A进程空间的wsock32没有关系了。
      

  4.   

    好像不行!
    wsock是应用程序接口,很多访问是不经过这个接口的
      

  5.   

    用共享内存
    #pragma data_seg(".HKT")
    char buf[1024]={0};
    #pragma data_seg()
      

  6.   

    网络包的截获http://www.csdn.net/cnshare/soft/openfile.asp?kind=1&id=13731