NOmoney 发表于 2021-11-24 16:08

栈的细节求助

红框框里,是怎么清除参数的?
我看好多汇编代码都是直接将esp,ebp恢复后,直接push,将原来的值给覆盖掉了(应该没想错)
谢谢各位大哥指点

zzzssm 发表于 2021-11-24 18:13

不同函数调用约定,会有不同的操作,比如C调用约定要求主调函数完成栈的平衡问题(在函数返回后通过add esp实现),标准调用约定要求被调用函数完成栈平衡(ret x 指令),这部分你自己去查调用约定就行了,具体实现的话你可以去逆向个函数看看他是怎么返回的就知道了,vs中提供了函数调用约定设置,你可以自己设置一下,或者直接调用c语言的库函数也行(编译过来后就是用的C调用约定),调用Windows提供的API的话其编译过来是用的标准调用约定。

搜索曾经的回忆 发表于 2021-11-24 16:24

建议了解下push,retn汇编指令,看看做了什么操作
页: [1]
查看完整版本: 栈的细节求助