今天hook了win api的send函数,然后检测到请求www.baidu.com的host数据包时就自动跳转到本站,但是发现修改send函数没用,我当时就在想是不是因为connect中的目标地址其实还未修改,是不是要一起修改。后来百度了一下,果然如此,需要把connect函数稍做修改,看源码
int WSAAPI hook_connect(IN SOCKET s,IN const struct sockaddr *name,IN int namelen)
{
OutputDebugString("MyConnect Function");
struct sockaddr_in *paddr =(struct sockaddr_in *)name;
paddr->sin_addr.S_un.S_addr = inet_addr("我的目标网站IP");
char temp[50];
char *ip =inet_ntoa(paddr->sin_addr);
int port =ntohs(paddr->sin_port);
sprintf(temp,"connect: ip=%s, port=%d\r\n",ip,port);
OutputDebugString(temp);
BYTE *p =(BYTE *)GetProcAddress(GetModuleHandle("ws2_32.dll"), "recv");
if(p)
{
sprintf(temp, "my connect: data of recv=%x:%x %x %x %x %x", p, p[0], p[1],p[2],p[3],p[4]);
OutputDebugString(temp);
}
//在这里返回换好了我的自定义地址paddr
return Real_connect(s, (sockaddr*)paddr, namelen);
}
本文链接:https://it72.com:4443/9292.htm