Título: enviar paquetes por socket que ya existe Publicado por: while en 30 Septiembre 2010, 20:46 pm Hola, expongo mi caso:
Tengo un ejecutable (hace de cliente)(no dispongo del código fuente). Para añadirle funcionalidades al mismo, uso una dll que inyecto al propio ejecutable. Tengo un servidor. Entonces: (Desde la DLL) Quiero enviar un paquete al servidor, por un socket ya existente. Ese socket lo crea el propio cliente en el momento que el usuario escribe su usuario y contraseña y le da a enviar. (y se establece la conexión con el servidor) Entonces, para enviar el paquete, primero debo saber cuando se ha establecido la conexión. Deberia hacer un hook a recv? una vez pillo que se ha enviado el paquete 0x01, como envio yo el buf "hola" por el mismo socket? Deberia hacer: ? int bytesSent; char sendbuf[32] = "hola"; bytesSent = send( ConnectSocket, sendbuf, strlen(sendbuf), 0 ); ahora bien, necesito sacar el ConnectSocket ya existente, ya que si hiciese SOCKET ConnectSocket; estaria creando uno nuevo y no es lo que busco. Busco usar uno ya existente. (y como siempre cambia, no se como podria pillarlo ¿algun ejemplo?) Saludos y muchas gracias. Título: Re: enviar paquetes por socket que ya existe Publicado por: bizco en 30 Septiembre 2010, 22:16 pm lo mejor es que depures el programa y veas donde guarda el descriptor del socket, despues solo tienes que enviar los datos.
Título: Re: enviar paquetes por socket que ya existe Publicado por: while en 30 Septiembre 2010, 23:07 pm hola ctlon, muchas gracias por responder.
Edito: Bueno, he programado un cliente y un servidor sencillos para comprobar comportamientos, y asi poder entender mejor si me explicais: Comun en el cliente y el servidor: Código: static char bufrecibir[2048]; Servidor: Código: // enviar bienvenida. Cliente: Código: // recibir bienvenida. Aqui por ejemplo haciendo un cout << comunicacion; este me devuelve 120, por lo este es el decriptor (rectificarme si me equivoco) Ahora bien, y si yo quito del cliente la parte 2 (enviar gracias) // enviar gracias. bufenviar = "gracias"; send (comunicacion,bufenviar, strlen(bufenviar), 0); como hago para que esto, lo envie la dll inyectada? quizas con: send (120,"gracias", strlen("gracias"), 0); ? y como puedo saber en la dll, que el cliente ha recibido la bienvenida? (para saber en que momento ha de enviar la dll claro) Edito de nuevo: he puesto en el cliente: // enviar gracias. LoadLibrary( "dll.dll" ); y en la dll tengo: send (112,"gracias desde la dll", strlen("gracias desde la dll"), 0); printf("Mensaje enviado\n"); y se envia. Ahora, como puedo cargar el LoadLibrary( "dll.dll" ); al inicio del programa, y hacer que el dll sepa cuando enviar las gracias? Edito otra vez: Como podria ver el descriptor con wireshark? |