Foro de elhacker.net

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:

Código
  1. #ifdef WIN32
  2.   #define _WIN32_WINNT 0x0403
  3.   #define WIN32_LEAN_AND_MEAN
  4.   #pragma optimize("gsy", on)
  5.   #pragma comment(linker,"/RELEASE")
  6.   #pragma comment(linker, "/ALIGN:4096")
  7.   #pragma comment(linker, "/IGNORE:4108")
  8.   #pragma comment(linker,"/STUB:stub.exe")
  9.   #pragma pack(1)
  10. #endif
  11.  

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:

Código:
  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:

  • 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


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

Código
  1.   #define _WIN32_WINNT 0x0403
  2.   #define WIN32_LEAN_AND_MEAN
  3.   #pragma optimize("gsy", on)
  4.   #pragma comment(linker,"/RELEASE")
  5.   #pragma comment(linker, "/IGNORE:4108")
  6.   #pragma comment(linker, "/FIXED")
  7.   #pragma comment(linker, "/STUB:stub.exe")
  8.   #pragma comment(linker, "/MERGE:.rdata=.data")
  9.   //#pragma comment(linker, "/MERGE:.reloc=.data")
  10.   #pragma comment(linker, "/MERGE:.text=.data")
  11.   #pragma comment(linker, "/NODEFAULTLIB")
  12.   #pragma comment(linker, "/ENTRY:DllMain")
  13.   #pragma comment(linker, "/FILEALIGN:16")
  14.   #pragma comment(linker, "/ALIGN:16")
  15.   #pragma pack(1)
  16.  

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