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?
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
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
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
Muchas gracias :D
Los moderadores pueden cerrar el hilo si quieren.
MessageBoxW (de Wide) es la otra version, por regla general casi todas la funciones A terminan llamando a las W.
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
@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
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!
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 ;-)
La implementacion esta en wide entonces lo que hace la version ANSI es transformar la cadena y llamar a la W.