论坛: 编程破解 标题: 菜鸟问题,请教一下高手 复制本贴地址    
作者: zlj982 [zlj982]    论坛用户   登录

  (闲话一句:)我在20CN注册已经一个星期了,一直作为潜水员(因为自己太菜了,问不出什么好问题)。但我感谢20CN,我学到了很多。谢谢大家!
  问题:我调试了286的关于具域网内防嗅探的程序,已经编译通过了,但运行时出现如下错误提示:
    Debug Assertio Failed!
    Program:...rpgram Files\Microsoft Visual Studio\MyProjects\1\Debug\1.exe
    File:dbgheap.c
    Line:1044
    Expression:_CrtIsValidHeapPointer(PUser Data)
    ...
 
  我是在Console Application下调试运行的,是不是不对啊?是不是应该进行一些前期配置?我已经弄了3天了,也没查到该怎么办。只有请教各位了!
原程序如下:
  #include <stdio.h>

#include <winsock2.h>

#define MAX_PACK_LEN 65535

#define MAX_HOSTNAME_LAN 255

#pragma comment (lib , "ws2_32.lib")

int main()

{
  SOCKET SockRaw,Sock;

  WSADATA wsaData;

  int ret=0;

  struct sockaddr_in sAddr,addr;

  char RecvBuf[MAX_PACK_LEN];

  char FAR name[MAX_HOSTNAME_LAN];

  struct hostent FAR * pHostent;

  char *Buf=(char *)malloc(128);

  int settimeout=1000;//这里我们设置了一秒钟超时

  printf("UNSniffer for Win2k v1.0\nPower by BigBall\nHomePage:http:\/\/www.patching.net\/liumy\nEmail:liumy@patching.net\nOicq:9388920\n\nChecking your system ,wait a moment please...\n");

  WSAStartup(MAKEWORD(2,2),&wsaData);

  //建立一条RawSocket

  SockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP);

  //再建立一条UDP

  Sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

  memset(&sAddr,0,sizeof(sAddr));

  memset(&addr,0,sizeof(addr));

  sAddr.sin_family=AF_INET;

  sAddr.sin_port=htons(5257);

  addr.sin_family=AF_INET;

  addr.sin_port=htons(5258);

  //把IP地址指向本机

  addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

  memset(RecvBuf,0, sizeof(RecvBuf));

  pHostent=(struct hostent *)malloc(sizeof(struct hostent));

  gethostname(name, MAX_HOSTNAME_LAN);

  pHostent=gethostbyname(name);

  //取得自己的IP地址

  memcpy(&sAddr.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);

  free(pHostent);

  //绑定一个本机的接收端口

  bind(SockRaw, (struct sockaddr *)&sAddr, sizeof(sAddr));

  //虚连接到本机的一个未打开的端口

  connect(Sock,(struct sockaddr *)&addr,sizeof(addr));

  Buf="1234567890!@#$%^&*";

  //设置超时

  setsockopt(SockRaw,SOL_SOCKET,SO_RCVTIMEO,(char *)&settimeout,sizeof(int));
 
  //向虚连接端口发送一个数据包

  send(Sock,Buf,strlen(Buf),0);

  //使用SockRaw尝试接收这个数据包

  ret=recv(SockRaw,RecvBuf,sizeof(RecvBuf),0);

  if(ret==SOCKET_ERROR || ret==0);

  //printf("No found any sniffer in your system!\n");

  else
 
  {

  //进行ChkSum

  if(Buf=="1234567890!@#$%^&*")

printf("Warning!!! Found sniffer!!!\n");
  }

  closesocket(Sock);

  closesocket(SockRaw);

  free(pHostent);

  free(Buf);

  WSACleanup();
//   
  return 0;
}

地主 发表时间: 05-05-10 14:28

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号