PE mas PEqueños..

Iniciado por Vaagish, 7 Mayo 2014, 21:10 PM

0 Miembros y 2 Visitantes están viendo este tema.

Vaagish

Se puede configurar Masm32 para que queden mas pequeñas las secciones del PE? Tengo mas db 0 que instrucciones..  :¬¬

En C++ podríamos hacer algo asi:

Código (cpp) [Seleccionar]
#pragma comment(linker,"/merge:.rdata=.text")
Ademas de configurar el IDE para reducir el PE

En masm32 hay alguna opcion de eso? O alguna herramienta para modificar las secciones de un programa?

Gracias! Saludos!

MCKSys Argentina

Y si le pasas UPX despues de compilar?

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Vaagish

No me reconoce el formato dice..  :huh: Creo que se podria editar a mano... pero existiendo herramientas no me quiero complicar con cada programa..


Eternal Idol

¿Ya probaste a pasarle ese parametro al linker? En principio es el mismo ...

ml /c /Cp /coff archivo.asm
link /merge:.rdata=.text archivo.obj
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

Vaagish

Citar¿Ya probaste a pasarle ese parametro al linker? En principio es el mismo ...

ml /c /Cp /coff archivo.asm
link /merge:.rdata=.text archivo.obj

Casi.. el comando lo entiende, pero rompe el archivo.. quedaría así:

ml /c /Cp /coff archivo.asm
link /subsystem:windows /merge:.rdata=.text archivo.obj

No reduce mucho igual.. alguna herramienta que modifique los campos del PEB y redimensione no hay? Esta bien lo que digo, no? Si cambiamos el tamaño de las secciones hay que modificar el PEB, verdad?

Saludos! Gracias!

Eternal Idol

#5
Cita de: Vaagish en  8 Mayo 2014, 20:04 PM
Casi.. el comando lo entiende, pero rompe el archivo.. quedaría así:

ml /c /Cp /coff archivo.asm
link /subsystem:windows /merge:.rdata=.text archivo.obj

No reduce mucho igual.. alguna herramienta que modifique los campos del PEB y redimensione no hay? Esta bien lo que digo, no? Si cambiamos el tamaño de las secciones hay que modificar el PEB, verdad?

El mio funciona bien, es muy elemental, apenas emula RtlGetCurrentPeb y llama a MessageBox con la linea de comandos: 1024 bytes. ¿Que tamaño tiene tu ejecutable y como se rompe exactamente?

link /merge:.data=.text /merge:.rdata=.text

PD. El PEB es una estructura en memoria, el PE es el formato del binario.
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

x64core

#6
Imposible, no es posible eliminar ningun campo del PE. talvez ajustar el DOS stub pero apuesto que te ahorras solamente unos bytes, juntar
todas las secciónes a formar una sola, Filealignment, etc habria que ver el ejecutable. En fin, lejos de recudir por medio de las caberas
al contrario se puede incrementar.

Por cierto ¿Cuanto es el tamaño del ejecutable 40kb? ¿Adonde se piensa ejecutar? en un S.O de disquette?

Vaagish

Ayer @Lord Pei me sugirió que trate de quitar la sección .data, con eso se redujo 50Kb,, el único problema es que tengo la cadena "cmd.exe" que estoy tratando de colocarla dentro del código..

Ahora con unas modificaciones me dejo juntar la sección data (no rdata) y se redujo 1024 bytes. Un lujo!

Citar¿Que tamaño tiene tu ejecutable y como se rompe exactamente?
CitarPor cierto ¿Cuanto es el tamaño del ejecutable 40kb? ¿Adonde se piensa ejecutar? en un S.O de disquette?

Jeje,, no.. pero va a ir metido dentro de un .mp3 el código.. igual lo estoy achicando para ver hasta donde se puede dejar.. Ahora pesa 1,50 KB y lo puedo dejar en 1 si logro sacar ese "cmd.exe" y juntar el .rdata, igual creo que ahora se ajusta mas a lo que tiene de codigo real y el tamaño..

CitarPD. El PEB es una estructura en memoria, el PE es el formato del binario.
Si, verdad.. pifie yo.

CitarImposible, no es posible eliminar ningun campo del PE. talvez ajustar el DOS stub pero apuesto que te ahorras solamente unos bytes, juntar
todas las secciónes a formar una sola, Filealignment, etc habria que ver el ejecutable. En fin, lejos de recudir por medio de las caberas
al contrario se puede incrementar.
El Filealignament me puede servir.. hay una forma de hacerlo que no recuerdo.. igual como decis, quizas no se gane mucho..

Saludos!! Gracias!

Eternal Idol

Cita de: Vaagish en  9 Mayo 2014, 20:15 PMAhora con unas modificaciones me dejo juntar la sección data (no rdata) y se redujo 1024 bytes. Un lujo!

Jeje,, no.. pero va a ir metido dentro de un .mp3 el código.. igual lo estoy achicando para ver hasta donde se puede dejar.. Ahora pesa 1,50 KB y lo puedo dejar en 1 si logro sacar ese "cmd.exe" y juntar el .rdata, igual creo que ahora se ajusta mas a lo que tiene de codigo real y el tamaño..

Si, ahi te deje la linea para juntar los 3 en 1.

Cita de: Vaagish en  9 Mayo 2014, 20:15 PMEl Filealignament me puede servir.. hay una forma de hacerlo que no recuerdo.. igual como decis, quizas no se gane mucho..

Eso si me jodio el ejecutable, al menos en Windows 7 x64 no funciona (es /align:16 por ejemplo).
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

x64core

Cita de: Vaagish en  9 Mayo 2014, 20:15 PM
Ayer @Lord Pei me sugirió que trate de quitar la sección .data, con eso se redujo 50Kb,, el único problema es que tengo la cadena "cmd.exe" que estoy tratando de colocarla dentro del código..

Ahora con unas modificaciones me dejo juntar la sección data (no rdata) y se redujo 1024 bytes. Un lujo!

Jeje,, no.. pero va a ir metido dentro de un .mp3 el código.. igual lo estoy achicando para ver hasta donde se puede dejar.. Ahora pesa 1,50 KB y lo puedo dejar en 1 si logro sacar ese "cmd.exe" y juntar el .rdata, igual creo que ahora se ajusta mas a lo que tiene de codigo real y el tamaño..
Si, verdad.. pifie yo.
El Filealignament me puede servir.. hay una forma de hacerlo que no recuerdo.. igual como decis, quizas no se gane mucho..

Saludos!! Gracias!
El código dentro de un .mp3 seria entonces la imagen PE o sólo el código? Sino pues apostaria a generar una shellcode.
Además es la cadena "cmd.exe" constante? de ser así puede ir en rdata definiendola como constante así el compilador no la agregaria en .data.

Cita de: Eternal Idol en  9 Mayo 2014, 20:30 PM
Si, ahi te deje la linea para juntar los 3 en 1.

Eso si me jodio el ejecutable, al menos en Windows 7 x64 no funciona (es /align:16 por ejemplo).
¿Cómo Filealignament pudo joder el ejecutable? No me referia a dejarlo a cero... se puede modificar si es mayor de 0x200.