Hook Socket API之后改变http报文头数据篡改send内容

socket库中的send和recv函数在被自定义的hook函数监视劫持后,想把send发送过程的http报文头里目标网站篡改,虽然把host:的域名替换了,但是结果浏览器显示的效果是请求被服务器禁止了,错误代码403,这时,WireShark显示的http数据中目标IP地址仍然是未篡改网站的IP,也就是说,我一直在向它请求另一个网站的数据,服务器自然会禁止我的非法请求。那么,不光要hook住send()和recv(),还要追根溯源,把connect()也要监视起来,通过篡改它的参数sock_Addr结构中的IP地址这一项,把连接转向自己的目标网站,这样在修改了报文头中host:下的域名后,目标网站就被正确的访问了。

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);
}
 这个是我自定义的Hook connect函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值