Pregunta acerca de MessageBox

Iniciado por ivancea96, 25 Mayo 2013, 22:01 PM

0 Miembros y 2 Visitantes están viendo este tema.

ivancea96

Hola, soy relativamente nuevo en ASM, y tengo una duda sobre el MessageBox.


.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?

mr.blood

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

ivancea96

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:
CitarEDITO: ¿Y qué diferencia hay con el invoke MessageBox?
¿Qué diferencia hay entre el invoke y llamarlo por call?

Repito, gracias :D

mr.blood

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

ivancea96

Muchas gracias :D

Los moderadores pueden cerrar el hilo si quieren.

Eternal Idol

MessageBoxW (de Wide) es la otra version, por regla general casi todas la funciones A terminan llamando a las W.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

mr.blood

Cita de: Eternal Idol 7D 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.

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

Sa1uDoS

Danyfirex

@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

MCKSys Argentina

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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Danyfirex

Cita de: 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!

Muchas gracias  MCKSys Argentina   ;-)