Hola a toda la comunidad,
Me encuentro desarrollando actualmente una PoC de un caballo de troya en C para Windows básico, que realice simplemente las operaciones de ejecutar los comandos que se le ordenen en un CMD. Lo tengo implementado a un 90% a falta de lo siguiente.
En el programa utilizo la función "CreateProcess" para crear un proceso hijo que ejecute cualquier comando que reciba como orden. Funciona correctamente y ejecuta todas las instrucciones que le envío. Pero lo que no se es cómo puedo redirigir la salida del CMD a un string, es decir, el resultado de la ejecución del comando, para después poder reenviar esta información al panel de control del caballo de troya.
Also así:
C:\Documents and Settings\DrKillador>getmac
Direccion fisica Nombre de transporte
=================== ==========================================================
CA-FE-CA-FE-CA-FE \Device\Tcpip_{**************
Imagino que se podría hacer con pipes por todo lo que he leído por Google y el buscador del foro, pero no he dado con el código exacto para realizar la labor y todos mis intentos son fallidos.
Gracias! :D
CreateProcess() (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx) recibe como parámetro una estructura llamada: STARTUPINFO (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx). En esta estructura está el elemento hStdOutput que es el handle de salida para los datos, de normal en aplicaciones de consola se establece al handle de lectura del CMD para que éste te pueda mostrar los resultados.
Así pues tendrías que crear un Pipe con CreatePipe() para poder pasárselo a CreateProcess() y así el nuevo proceso utilice tu std para sacar datos.
Saludos
Muchas gracias, me fue de gran utilidad :D