我写了一个MY_gethostbyname来代替原来的gethostbyname,目的是返回一个虚假的hostent结构指针,使被挂钩的程序得到一个虚假的ip地址。由于gethostbyname需要返回一个hostent结构的指针,所以我自己new了一个hostent结构,并且自定义了一个ip地址的数组。但hostent确实使人觉得迷惑typedef struct MY_hostent {  
char FAR* h_name;  
char FAR  FAR** h_aliases;  
short h_addrtype;  
short h_length;  
char FAR  FAR** h_addr_list;
} MY_hostent;特别是char FAR  FAR** h_addr_list,它指向那里?我要将ip地址数组的地址赋给h_addr_list,是不是该这样?
再就是钩子函数的书写问题,程序老是非法操作以下是我的代码:hostent *p=new hostent;char ip[2][4]={{1,1,1,1},{0,0,0,0}};struct hostent * FAR WINAPI MY_gethostbyname( const char* name) //钩子函数
{
p->h_addr_list =(char**)ip;//这里可能错了!!
         p->h_length=4;
         return p;
}

解决方案 »

  1.   

    赋值的话这样的代码就OK了^_^LPSTR str = "192.168.0.66";p->h_addr_list[0] = str
      

  2.   

    不可能吧,p->h_addr_list指向的是一个网络字节顺序的ip地址,不是字符串啊
      

  3.   

    这篇文章是你需要的
    http://www.vckbase.com/document/viewdoc/?id=851
      

  4.   

    不可能吧,p->h_addr_list指向的是一个网络字节顺序的ip地址,不是字符串啊=============================================================================     没错的呵呵,你自己试试看好了^_^