Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: marax en 23 Febrero 2021, 22:42 pm



Título: ¿Como declarar un array dentro de una estructura en MASM?
Publicado por: marax en 23 Febrero 2021, 22:42 pm
Llevo googleandolo 20 minutos y no logro encontrar una forma de que esto:

Código
  1. _struct struct
  2. data0 db 64 dup (?)
  3. data1 db 64 dup (?)
  4. _struct ends

funcione correctamente. Cuando compruebo el tamaño de _struct es 64 (cuando deberia ser 128).

¿Como declaro un array dentro de una estructura correctamente en MASM?

Segun la MSDN:

Citar
name STRUCT ⟦alignment⟧ ⟦, NONUNIQUE⟧
field-declarations
name ENDS
https://docs.microsoft.com/es-es/cpp/assembler/masm/struct-masm?view=msvc-160 (https://docs.microsoft.com/es-es/cpp/assembler/masm/struct-masm?view=msvc-160)

¿Cual es exactamente la sintaxis de field-declarations cuando se trata de un array?

Gracias de antemano.
Saludos.


Título: Re: ¿Como declarar un array dentro de una estructura en MASM?
Publicado por: Eternal Idol en 23 Febrero 2021, 22:48 pm
¿En que te basas para afirmar que la estructura ocupa 64 bytes? El WinDbg no concuerda:

0:000> dt hola!_struct /v
struct _struct, 2 elements, 0x80 bytes
   +0x000 data0            : UChar
   +0x040 data1            : UChar

Código
  1. mov eax, sizeof _struct

Eso pone 0x80 en eax.


Título: Re: ¿Como declarar un array dentro de una estructura en MASM?
Publicado por: marax en 23 Febrero 2021, 23:03 pm
Bueno, 20 minutos perdidos...
Me basada en la salida de esto:

Código
  1. invoke printf, __txt ("%d", 0dh, 0ah), sizeof _struct

que producia 128 con dos arrays de 128 bytes, pero creo que habia escrito algo mal porque ahora si se ve 256...  :huh: