Queria consultarle a ustedes un problema con el que me he encontrado.
Estoy haciendo una aplicacion de tipo cliente servidor. Cliente en vb.net y el server en c/c++. La comunicacion entre estos dos funciona perfecta cuando compilo el server en un ejecutable, pero lo que realmente quiero hacer es utilizarlo desde una dll, inyectando esta misma en el proceso explorer.exe. Probe todos los metodos explicados en el paper de mazard. La inyeccion se realiza exitosamente, el inconveniente es que: les muestro el main de mi aplicacion asi lo entienden mejor:
Código:
bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
Servidor * serv;
serv = new Servidor;
serv->Ip=const_cast<char *>(IP);
serv->Puerto=8000;
serv->Conectar();
while(serv->Conectado==false)
{
serv->Conectar();
}
return 0;
}
Si quito el while el proceso que tiene la dll (explorer.exe) injectada se cuelga y deja de funcionar, y debo reiniciarlo para que funcione nuevamente.
Realmente debo dejar ese while ya que es el que me asegura que cuando se empece a escuchar desde el cliente(conexión inversa) este se conecte automaticamente.
No se si alguno tuvo que enfrentar este problema alguna vez. Ralmente soy nuevo tanto en c/c++ y mas aun con el tema de dll injection.
PD: Probe con todos los tipos de inyeccion y con todos me ocurre los mismo, y al quitar ese while, no se cuelga.
Quizas exista alguna forma de realizar que el server intente conectase al realizarse en la escucha del puerto.
Gracias, Saludos.
EI: juntando mensajes.
Sigo probando con mi codigo y me di cuenta que, el while no es, ya que cuando se establece la conexión entre el cliente y el servidor el proceso al que le inyecte la dll se sigue colgando. Pregunta? Es normal que se cuelgue un proceso al realizar una inyeccion dll o es algo en mi codigo que debe estar probocando esto.
Gracias, Saludos.