Eliminar basura de los exes compilados en c++

Iniciado por HaX991, 12 Julio 2010, 22:31 PM

0 Miembros y 1 Visitante están viendo este tema.

HaX991

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!

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

HaX991

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!!

Littlehorse

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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[Zero]

#4
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

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

HaX991

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!!!!!

KJD

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?
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

HaX991

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!!