Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Rozor en 16 Septiembre 2007, 22:37 pm



Título: Estructura de datos en NASM y/o MASM
Publicado por: Rozor en 16 Septiembre 2007, 22:37 pm
Hola, la duda es en nasm o masm como se tratan a las estructuras.

Por que en MASM haciendo invoke a sockaddr_in por ejemplo, lo metes como offset pero si lo hacemos metiendo en pila etc... como se manipularia?



MASM:

  mysock sockaddr_in <>

luego

  mov mysock.sin_family, 0x04  ; AF_INET

pero luego al meterlo en la pila para llamar a connect no sirve

 push 0x00
 push offset mysock
 push offset sock
 call connect  ; o direccion hardcoreada

Gracias.


Título: Re: Estructura de datos en NASM y/o MASM
Publicado por: nts94 en 11 Julio 2011, 13:26 pm
Has probado a usar addr en vez de offset?


Título: Re: Estructura de datos en NASM y/o MASM
Publicado por: Иōҳ en 12 Julio 2011, 22:01 pm
Has probado a usar addr en vez de offset?

exactamente cuando haces referencia al puntero de una struct tienes que usar la directiva addr, ya que offset no "funciona" en esos casos, te pego una parte del code, almenos el cliente.

Código
  1. .data?
  2. S1        SOCKET ?
  3. S2        SOCKET ?
  4. Sin1      sockaddr_in <>
  5. Sin2      sockaddr_in <>
  6. WSAData   WSADATA <>
  7. Temp      DD ?
  8.  
  9.  
  10. .code
  11. start:
  12.  
  13. invoke  WSAStartup, 0101h, ADDR WSAData
  14. invoke  socket, PF_INET, SOCK_STREAM, IPPROTO_TCP
  15. mov     S1, eax
  16. mov     ax, AF_INET
  17. mov     Sin1.sin_family, ax
  18. xor     eax, eax
  19. mov     Sin1.sin_addr, eax
  20. invoke  inet_addr, addr ServerIPAddress
  21. mov     Sin1.sin_addr, eax
  22. invoke  htons, ListeningPort                               ; listen to a specified port
  23. mov     Sin1.sin_port, ax
  24.  
  25. ;invoke  bind, S1, ADDR Sin1, SIZEOF sockaddr_in
  26.  
  27.  
  28. ;invoke  closesocket, S2
  29. ;mov     eax, SIZEOF sockaddr_in
  30. ;mov     Temp, eax
  31. ;invoke  accept, S1, ADDR Sin2, ADDR Temp
  32. ;mov     S2,eax
  33.  
  34.  
  35. invoke  connect, S1, addr Sin1, SIZEOF Sin1
  36.  
  37. mov     TempVar, SIZEOF SendBuff
  38. invoke send, S1, addr SendBuff, TempVar, 0

creo que te daría la idea ._.

Nox.