x64masm汇编调用MessageBoxA函数栈空间被污染。


在win32Msgbox函数中调用了Messagebox,调试发现执行到messagebox后栈空间会被污染rip寄存器指令执行异常。
但是给他开辟一个8大小的栈空间程序正常这是为什么?

x64masm汇编调用MessageBoxA函数栈空间被污染。


在win32Msgbox函数中调用了Messagebox,调试发现执行到messagebox后栈空间会被污染rip寄存器指令执行异常。
但是给他开辟一个8大小的栈空间程序正常这是为什么?

x64汇编中,非叶函数调用要求栈16字节对齐
函数调用前栈是16字节对齐的,调用时压入返回地址占用8字节
进入函数后需sub rsp, 8h
之后栈满足16字节对齐