-
-
[求助]hook accept拒绝连接
-
发表于:
2012-3-5 09:46
5832
-
需要限制程序A的网络连接(比如一天一个IP只能connect几次),无法修改程序A,于是采用了注入hook其accept,如下:
SOCKET WSAAPI myaccept(
SOCKET s,
struct sockaddr FAR * addr,
int FAR * addrlen
)
{
static int count=0;
lpfnaccept real_accept=(lpfnaccept)HookItem.pOldFunEntry;
SOCKET sClient=((lpfnaccept)addr)(s,addr,addrlen);
SYSTEMTIME systm;
::GetLocalTime(&systm);
SOCKADDR_IN peer_addr;
int peer_addrlen=sizeof peer_addr;
::getpeername(sClient,(LPSOCKADDR)&peer_addr,&peer_addrlen);
log(systm,peer_addr);
if (count>3)
{
count=0;
::closesocket(sClient);
return INVALID_SOCKET;
}
else
{
++count;
return sClient;
}
}
结果发现如果原本返回sClient则没有问题,如果拒绝访问return INVALID_SOCKET;一次后则后续的所有connect都会失败,并且不会写入log,也就是说没有再调用我的myaccept?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课