如何解决x86 程序集中的 MessageBox 程序
有一个简单的 MessageBox
程序:
NULL EQU 0 ; Constants
MB_DEFBUTTON1 EQU 0
MB_DEFBUTTON2 EQU 100h
IDNO EQU 7
MB_YESNO EQU 4
extern _MessageBoxA@16 ; Import external symbols
extern _ExitProcess@4 ; Windows API functions,decorated
global Start ; Export symbols. The entry point
section .data ; Initialized data segment
MessageBoxText db "Do you want to exit?",0
MessageBoxCaption db "MessageBox 32",0
section .text ; Code segment
Start:
push MB_YESNO | MB_DEFBUTTON2 ; 4th parameter. 2 constants ORed together
push MessageBoxCaption ; 3rd parameter
push MessageBoxText ; 2nd parameter
push NULL ; 1st parameter
call _MessageBoxA@16
cmp EAX,IDNO ; Check the return value for "No"
je Start
push NULL
call _ExitProcess@4
我的问题是:
在调用 esp
以将堆栈恢复到以前的状态后,我们不应该向 MessageBoxA
reg 添加适当的值吗?如果是这样,则在调用 push MessageBoxCaption
时必须将多少添加到 esp
寄存器 (4?)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。