Hola a todos, llevo un tiempo buscado como hacer para que los ejecutables creados con visual c++ ocupen menos, puse:
#ifdef WIN32
#define _WIN32_WINNT 0x0403
#define WIN32_LEAN_AND_MEAN
#pragma optimize("gsy", on)
#pragma comment(linker,"/RELEASE")
#pragma comment(linker, "/ALIGN:4096")
#pragma comment(linker, "/IGNORE:4108")
#pragma comment(linker,"/STUB:stub.exe")
#pragma pack(1)
#endif
ademas tambien puse que lo compile de forma "Release". En forma "Debug" ocupa 190kb y al pasarlo a la otra se keda en unos 20-25kb pero aun asi sige saliendo dentro del exe esto:
TLOSS error
SING error
DOMAIN error
R6028
- unable to initialize heap
R6027
- not enough space for lowio initialization
R6026
- not enough space for stdio initialization
R6025
- pure virtual function call
R6024
- not enough space for _onexit/atexit table
R6019
- unable to open console device
R6018
- unexpected heap error
R6017
- unexpected multithread lock error
R6016
- not enough space for thread data
abnormal program termination
R6009
- not enough space for environment
R6008
- not enough space for arguments
R6002
- floating point not loaded
Microsoft Visual C++ Runtime Library
alguien sabe alguna otra forma de hacer que el compilador no meta eso, xk yo creo k eso es innecesario...
Gracias y saludos!
Podes sacar la RTL (Run Time Library) pero vas a tener que reemplazar las funciones que uses de alguna manera.
Busca:
/NODEFAULTLIB
PD. Obviamente no es basura ni mucho menos.
esk vi la imbot k esta en visual c++ y ocupa unos 30-35kb y eso k tiene muxo code y yo cualkier "cosa" que ago ocupa lo mismo con 2 lineas xdd
saludos!!
Precisamente eso ocurre por lo que te menciono Eternal Idol. Te dejo este articulo que seguramente te aclare el panorama respecto al por que sucede esto:
- Crear nuestra propia Run Time Library
- Crear nuestra propia Run Time Library (Primera Parte) (http://www.solocodigo.com/index.php?opt=viewitem&id=181&type=4&node=10)
- Crear nuestra propia Run Time Library (Segunda Parte) (http://www.solocodigo.com/index.php?opt=viewitem&id=177&type=4&node=10)
Saludos
Fíjate también, en las opciones de linker, de decirle que borre la sección .reloc (FIXED), quitar la sección .rsrc y el manifest si no lo usas y eliminar la información de debug. Luego también puedes hacer merge a la sección de código y de datos.
Saludos
bueno gracias al crack de [Zero] k me estuvo ayudando por msn hemos dejado el binario en 1,35 KB (1.392 bytes) IMRESIONANTE ( al principio eran 196kb xdddd )
para el k kiera saber como
#define _WIN32_WINNT 0x0403
#define WIN32_LEAN_AND_MEAN
#pragma optimize("gsy", on)
#pragma comment(linker,"/RELEASE")
#pragma comment(linker, "/IGNORE:4108")
#pragma comment(linker, "/FIXED")
#pragma comment(linker, "/STUB:stub.exe")
#pragma comment(linker, "/MERGE:.rdata=.data")
//#pragma comment(linker, "/MERGE:.reloc=.data")
#pragma comment(linker, "/MERGE:.text=.data")
#pragma comment(linker, "/NODEFAULTLIB")
#pragma comment(linker, "/ENTRY:DllMain")
#pragma comment(linker, "/FILEALIGN:16")
#pragma comment(linker, "/ALIGN:16")
#pragma pack(1)
saludos!!
graciasss!!!!!
Hax gracias por la data, pero si en mi programa pongo el codigo tal cual lo mostras, no encuentra el archivo stub.exe, tenes alguna idea de como solucionarlo?
ui sorry el stub no lo trae, te lo intente subir a megaupload pero llevaba 20 min y no se subia solo salia verificacion en proceso... entonces lo subi a un host mio toma:
http://proyect991.es/stub.rar
este stub esta super reducido amm y si usas funciones estandar del compilador vc++ (Microsoft Visual C++ Runtime Library) y pones #pragma comment(linker, "/NODEFAULTLIB") no podrs usar strncpy, strncmp...
tendras k sustituirlas por las de string.h...., entre otras...
Pero esa opcion es una de las que hace que tu .exe quede super reducido ;)
pd: al final deje la dll k comento mas arriba en 605 bytes (es un rootkit ring3 :)) solo ordenando el code y usando esas opciones.
saludos!!