Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: HaX991 en 12 Julio 2010, 22:31 PM

Título: Eliminar basura de los exes compilados en c++
Publicado por: HaX991 en 12 Julio 2010, 22:31 PM
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!
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: Eternal Idol en 12 Julio 2010, 22:51 PM
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.
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: HaX991 en 12 Julio 2010, 23:09 PM
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!!
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: Littlehorse en 12 Julio 2010, 23:40 PM
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:


Saludos
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: [Zero] en 12 Julio 2010, 23:47 PM
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
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: HaX991 en 13 Julio 2010, 02:07 AM
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!!!!!
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: KJD en 17 Julio 2010, 19:11 PM
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?
Título: Re: Eliminar basura de los exes compilados en c++
Publicado por: HaX991 en 26 Julio 2010, 11:53 AM
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!!