.. lo que no entendía es por que podía ser el VirtualSize mayor que el RawSize
Virtual Size puede ser menor y mayor que Raw Size.
En determinados ejemplos es muy fácil saber porqué. Fíjate en un UPX cualquiera, sus secciones pueden ser las siguientes:
Nombre Virtual Offset Virtual Size Raw Offset Raw Size
UPX0 00001000 00005000 00000400 00000000
UPX1 00006000 00001000 00000400 00000400
.rsrc 00007000 00001000 00000800 00000200
File Alignment: 200
Section Alignment: 1000
1ª sección: UPX0
Virtual Size = 5000 mientras que el Raw Size es ¡cero!
¿Qué ocurrirá? Pues que cuando se cargue en memoria la sección UPX0 tendrá un tamaño de 5000 bytes y será rellenada de ceros.
Fíjate en la segunda: UPX1
Un UPX es muy sencillo saber cuándo salta al OEP, así que me voy a poner en el salto después de descomprimirse:
00406324 cmp esp,eax
00406326 jne short 00406322
00406328 sub esp,-80
0040632B jmp 00401000
00406330 db 00...
A partir de ahí son todo 0. Como se observa el Virtual Size son 1000 bytes pero el Raw Size son 400 entonces... ¿Qué pasa con esos C00 bytes? Pues que son rellenados con ceros.
Se puede poner el Virtual Size a 400 y será correcto también, porque como Section Alignment es 1000 en memoria la sección será de un tamaño = 1000 bytes.
Ahora vamos a ver lo contrario:
Un caso lógico que hace por ejemplo Topo es el siguiente:
Código real: 6 bytes
File Alignment: 10 bytes
Por lo tanto podríamos tener una sección con Raw Size = 10 bytes, pero realmente son 6, aunque por File Alignment le ponemos 10. La sección podría ser la siguiente:
Nombre Virtual Offset Virtual Size Raw Offset Raw Size
.sección 00000000 00000006 00000000 00000010
mi sorpresa es que cuando añado el VirtualSize (menor que el RawSize) me dice que tiene que ser mayor
Tampoco veo yo que te tenga que marcar ese error. Es que no te lo tiene que dar.
Mira, de todos modos te recomiendo que uses el programa Topo 1.2 para añadir secciones y ese problema ya no te lo marcará.
También te comento que los antivirus dan a Topo 1.2 como virus, así que tendrás que modificarlo.
Un saludo