我写了一个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;
}
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;
}
http://www.vckbase.com/document/viewdoc/?id=851