elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  como usar estructuras en nasm?
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: como usar estructuras en nasm?  (Leído 7,253 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
como usar estructuras en nasm?
« en: 16 Julio 2013, 20:45 pm »

hola

alguien me puede decir como usar estructuras en nasm?, lo que estoy tratando de programar es un socket en asm, pero no se como colocar la estructura sockaddr_in en nasm para usar los parametros de .sin_family, .sin_port, etc


En línea

.                                 
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #1 en: 16 Julio 2013, 21:00 pm »

Hola

Explique eso mismo a unos usuarios.

Código:
http://foro.elhacker.net/asm/principio_de_troyano_asm-t390224.0.html

Código:
http://foro.elhacker.net/asm/solucionadoproblema_con_api_accept_winsock-t389993.0.html

Un saludo.


En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #2 en: 16 Julio 2013, 21:29 pm »

ok gracias por los link, ahorita los checo

solo una pregunta, sabes como iniciar la estructura en nasm? porque veo que lo hacen asi en fasm

sa      sockaddr_in <>

pero es lo mismo para nasm?

gracias nuevamente

salu2
En línea

.                                 
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #3 en: 17 Julio 2013, 00:02 am »

http://www.nasm.us/doc/nasmdoc4.html

Sección 4.12.10, hay está todo sobre las estructuras en NASM.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #4 en: 17 Julio 2013, 17:20 pm »

vi los links y lei que no era necesario usar la estructura, tan solo con poner las direcciones era mas que suficiente, entonces tuve una duda

en C para usar connect se usa

struct sockaddr_in cli;

connect(socket, (struct sockaddr*)&cli, sizeof(struct sockaddr))

en asm entonces solo tendria que poner, por ejemplo

sockaddr_in resb 16

push 0x2  -->AF_INET
push 0xb822 --> sin_port
push 0x0100007f --> sin_addr
push dword [sockaddr_in] --> sizeof(struct sockaddr_in)
push [direccion de sock] --> descriptor socket
push [direccion de connect] --> funcion connect()

asi seria entonces?, o estoy equivocado?

salu2
En línea

.                                 
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #5 en: 17 Julio 2013, 17:30 pm »

https://jakash3.wordpress.com/2011/01/15/assembly-socket-example/

Está con sintaxis AT&T, espero que no tengas problema.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #6 en: 17 Julio 2013, 17:49 pm »

vi los links y lei que no era necesario usar la estructura, tan solo con poner las direcciones era mas que suficiente, entonces tuve una duda

en C para usar connect se usa

struct sockaddr_in cli;

connect(socket, (struct sockaddr*)&cli, sizeof(struct sockaddr))

en asm entonces solo tendria que poner, por ejemplo

sockaddr_in resb 16

push 0x2  -->AF_INET
push 0xb822 --> sin_port
push 0x0100007f --> sin_addr
push dword [sockaddr_in] --> sizeof(struct sockaddr_in)
push [direccion de sock] --> descriptor socket
push [direccion de connect] --> funcion connect()

asi seria entonces?, o estoy equivocado?

salu2

Si, estas equivocado, ese procedimiento se lo explique al usuario de algunos de esos links, una estructura no es mas que otro puntero, es lo mismo en nasm, fasm o gas, mira te dejo un ejemplo.

AT&T espero que no tengas problemas, estructura sacada del MSDN.

Código
  1. subl $0x8, %esp
  2. pushl $0x00010000
  3. pushl $0x7fb82202

Ahora esp apunta a la estructura sockaddr_in, y lo siguente es cargar los parametros, como estas haciendo, pero de esa forma estabas dejando bytes nulos la estructura estaba mal. Y estaba al reves.

Un saludo.
« Última modificación: 17 Julio 2013, 17:52 pm por cpu2 » En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #7 en: 18 Julio 2013, 03:58 am »

gracias, creo entender lo del puntero hacia sockaddr_in

se reserva doble word a esp, donde en los primeros 4 words se pone el primer push y en el segundo word el segundo push

sub esp, 8
word1 -> push 0x00010000
word2 -> push 7fb82202

despues se meten los bytes de la estructura "sin_por, sin_addr", etc, llevo 2 semanas estudiando asm y todavia me confunden muchas cosas, pero me imagino que sera algo asi parecido, los push no hay problema, pero no se como reservar ese espacio en esp para meter las direcciones y llegar a la estructura

les dejo el codigo que llevo hecho, es muy novato pero es lo que he logrado hasta ahorita, si me pudieran ayudar a implementar lo de las direcciones o minimo la estructura, se los agradeceria, mientras seguire estudiando mas porque si me hace falta

Código
  1. [BITS 32]
  2.  
  3. section .data
  4.  
  5. wsdll: db 'ws2_32.dll',0
  6. wsaddr: dd '0xFFFFFFFF'
  7. Getpc: db '0xFFFFFFFF'
  8.  
  9. WStp: db 'WSAStartup',0
  10. WSaddr: dd '0xFFFFFFFF'
  11. WSD: dd 'WSADATA',0
  12. saveWSA: dd '0xFFFFFFFF'
  13. soc: db 'SOCKET',0
  14. soadd: dd '0xFFFFFFFF'
  15.  
  16. res1: db "WSAStartup %d", 10, 0
  17. res2: db "Socket %d", 10, 0
  18.  
  19. section .text
  20.  
  21. global _WinMain@16
  22. extern _ExitProcess@4
  23. extern _LoadLibraryA@4
  24. extern _GetProcAddress@8
  25. extern _printf
  26. extern _WSAStartup@8
  27.  
  28. _WinMain@16:
  29.  
  30. xor eax, eax
  31.  
  32. push wsdll
  33. call _LoadLibraryA@4
  34. mov [wsaddr], eax
  35.  
  36. push WStp
  37. push dword [wsaddr]
  38. call _GetProcAddress@8
  39. mov [Getpc], eax
  40.  
  41. push WSD
  42. push 0x202
  43. call [Getpc]
  44. mov [saveWSA], eax
  45.  
  46. cmp dword [saveWSA], -1
  47. jne mns1
  48. je erro
  49.  
  50. mns1:
  51. push dword [saveWSA]
  52. push res1
  53. call _printf
  54.  
  55. push soc
  56. push dword [wsaddr]
  57. call _GetProcAddress@8
  58. mov [Getpc], eax
  59.  
  60. push 6
  61. push 1
  62. push 2
  63. call [Getpc]
  64. mov [soadd], eax
  65.  
  66. push dword [soadd]
  67. push res2
  68. call _printf
  69.  
  70.  
  71.  
  72. erro:
  73. push 0
  74. call _ExitProcess@4
  75.  
En línea

.                                 
xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #8 en: 18 Julio 2013, 04:35 am »

se reserva doble word a esp, donde en los primeros 4 words se pone el primer push y en el segundo word el segundo push

sub esp, 8
word1 -> push 0x00010000
word2 -> push 7fb82202

No, subl $0x8, %esp reserva ocho byte, que son el mienbro sin_zero de la estructura sockaddr_in. Los push lo que hacen es decrementar cuatro byte y luego copia el valor que le pasaste como argumento. Pero tambien podrias reservar siete byte, ya que el cero del primer push cuenta. Y tendrias los quince byte que son la estrucutra sockaddr_in.

En la memoria con mi ejemplo tendrias esto cargado. Son dieciseis byte, el ultimo cero se ignora ya que son quince la estructura.

Código
  1. 0x0000000000000000000100007fb82202

El segundo push seria el principio.

despues se meten los bytes de la estructura "sin_por, sin_addr"

Te olvidas de sin_family es el 02 del segundo push.

Sobre el codigo, no programo en Windows, pero podrias hacer un socket y connect y dejar por ejemplo netcat ala escucha, no te lies tanto.

Un saludo.
En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como usar estructuras en nasm?
« Respuesta #9 en: 18 Julio 2013, 05:16 am »

hola

gracias, de hecho yo uso mas linux, pero casi todos los manuales que encuentro y que logro comprender son para masm y nasm, y la mayoria de las cosas que encuentro como ejercicios son para windows, asi que uso virtualbox con windows 7 y uso netcat como servidor para verificar con ollydbg cosas que no entiendo

pero gracias de todas formas, me sirvio mucho de ayuda, primero hare lo de la estructura como esta en la documentacion de nasm y ya cuando aprenda mas lo hare como mencionas

ahorita ya busco sobre como usar la estructura,ya que vi que usan %define sizeof(x) x %+ _size, y luego usan

struct STAT
 .st_size resd 1
endstruc


section .bss
stat      resb   sizeof(STAT)

section .text

//...........
mov eax, dword [stat + STAT.st_size]

esto es sacado de otro codigo, pero esto tambien me gustaria aprenderlo, porque no se como acceder a una estructura

bueno, cualquier modificacion o sugerencia, se los agradezco

salu2

En línea

.                                 
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien sabe como manejar los tipo de estructuras de las API de uindoou
Programación Visual Basic
mixer028 3 2,220 Último mensaje 23 Febrero 2010, 22:44 pm
por Karcrack
Eso es bug del hypervisor o del NASM....
ASM
ño_ño 1 3,087 Último mensaje 15 Julio 2010, 03:58 am
por ño_ño
Duda: ¿Como especificar parámetros dentro de estructuras de una función?
ASM
.:UND3R:. 2 3,758 Último mensaje 13 Mayo 2012, 18:53 pm
por .:UND3R:.
Ayuda en estructuras como funcion
Programación C/C++
Kensei_G 1 2,097 Último mensaje 30 Mayo 2012, 19:35 pm
por durasno
Como crear bibliotecas estaticas y dinamicas en NASM?
ASM
dnsdirm 0 2,527 Último mensaje 3 Septiembre 2013, 04:23 am
por dnsdirm
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines