Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: ivancea96 en 25 Mayo 2013, 22:01 pm



Título: Pregunta acerca de MessageBox
Publicado por: ivancea96 en 25 Mayo 2013, 22:01 pm
Hola, soy relativamente nuevo en ASM, y tengo una duda sobre el MessageBox.

Código:
.data
  titulo db "Hola"
  cuerpo db "¿Cómo te llamas?"

.code
  push 0
  push titulo
  push cuerpo
  push 0
  call [MessageBoxA]
Bueno, eso es un Messagebox, como veis.
Mis dudas son estas:
  • "MessageBoxA": ¿Porqué es ese A? ¿Hay varias clases de MessageBox?
  • ¿Qué son los 0 que se ponen a la pila?¿Qué funcionamiento tienen dentro del MessageBox?

Gracias adelantadas a todos :D
 
EDITO: ¿Y qué diferencia hay con el invoke MessageBox?


Título: Re: Pregunta acerca de MessageBox
Publicado por: mr.blood en 26 Mayo 2013, 15:21 pm
MessageBoxA de ¿Ascii?
MessageBoxU de Unicode

Los 0 de la pila son argumentos de la función. MB_OK para las opciones y NULL para el Handle en este caso.

No se que es eso de PreguntaBox, me suena a una macro, desde luego una API no es.

Sa1uDoS


Título: Re: Pregunta acerca de MessageBox
Publicado por: ivancea96 en 26 Mayo 2013, 17:12 pm
Muchas gracias mr.blood :D

Lo de PreguntaBox fue una errata. Quería decir MessageBox. Ahora lo edito y lo pongo bien.

¿Sabes que argumentos se le pueden meter a lo de push 0/push 0? ¿Qué se le podría poner, y qué cambiaría?

Si sabes de algún lugar para ver el funcionamiento de la API, también me valdría :D

Y lo otro:
Citar
EDITO: ¿Y qué diferencia hay con el invoke MessageBox?
¿Qué diferencia hay entre el invoke y llamarlo por call?

Repito, gracias :D


Título: Re: Pregunta acerca de MessageBox
Publicado por: mr.blood en 26 Mayo 2013, 20:51 pm
invoke MessageBoxA,0,0,0,0 es lo mismo que
push 0
push 0
push 0
push 0
call MessageBoxA

invoke es una macro, si miras el código con Olly después de linkearlo verás que es solo para facilitarle la tarea al programador, en realidad queda con el call

Para ver información de las API pon en Google MessageBoxA MSDN y voilá http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx.

Sa1uDoS


Título: Re: Pregunta acerca de MessageBox
Publicado por: ivancea96 en 26 Mayo 2013, 21:19 pm
Muchas gracias :D

Los moderadores pueden cerrar el hilo si quieren.


Título: Re: Pregunta acerca de MessageBox
Publicado por: Eternal Idol en 28 Mayo 2013, 10:22 am
MessageBoxW (de Wide) es la otra version, por regla general casi todas la funciones A terminan llamando a las W.


Título: Re: Pregunta acerca de MessageBox
Publicado por: mr.blood en 28 Mayo 2013, 20:08 pm
MessageBoxW (de Wide) es la otra version, por regla general casi todas la funciones A terminan llamando a las W.

Buen apunte. Esas funciones se ven mirando la Import Address Table y no sabía qué sentido tenía.

Sa1uDoS


Título: Re: Pregunta acerca de MessageBox
Publicado por: Danyfirex en 28 Mayo 2013, 21:26 pm
@Eternal Idol 7D me puedes explicar lo que pongo en negrita:


MessageBoxW (de Wide) es la otra version, por regla general casi todas la funciones A terminan llamando a las W.


saludos


Título: Re: Pregunta acerca de MessageBox
Publicado por: MCKSys Argentina en 28 Mayo 2013, 22:03 pm
Bueno, me meto sin que me llamen:

Como dijo Eternal, normalmente las API A son wrappers de las W. Osea, terminan llamando a la versión W de dicha API.

Saludos!


Título: Re: Pregunta acerca de MessageBox
Publicado por: Danyfirex en 28 Mayo 2013, 23:52 pm
Bueno, me meto sin que me llamen:

Como dijo Eternal, normalmente las API A son wrappers de las W. Osea, terminan llamando a la versión W de dicha API.

Saludos!

Muchas gracias  MCKSys Argentina   ;-)


Título: Re: Pregunta acerca de MessageBox
Publicado por: Eternal Idol en 29 Mayo 2013, 11:42 am
La implementacion esta en wide entonces lo que hace la version ANSI es transformar la cadena y llamar a la W.