手工给 x64 Windows 系统调用布局用户栈
一直按照给普通函数调用布局栈的方法,以为前四个通过寄存器传递的参数是依次 spill 到
原来虽然 syscall 指令并不会将返回地址 push 到栈上,但这个栈上返回地址还是得留出来;于是应该将前四个寄存器参数依次 spill 到
对着虚空日了一天
一直按照给普通函数调用布局栈的方法,以为前四个通过寄存器传递的参数是依次 spill 到
rsp+0
- rsp+0x18
的位置,然后在 rsp+0x20
处继续布局后续参数;结果布局了一天全跑不动原来虽然 syscall 指令并不会将返回地址 push 到栈上,但这个栈上返回地址还是得留出来;于是应该将前四个寄存器参数依次 spill 到
rsp+8
- rsp+0x20
的位置,然后在 rsp+0x28
处继续布局后续参数对着虚空日了一天