堆栈桢结构与gcc版本

发布于 2022-09-21 00:49:39 字数 1271 浏览 10 评论 0

这阵子在看内存溢出的相关文章——Smashing The Stack For Fun And Profit,发现时间已经很久远了,linux发行版也发生了很多变化,关于压栈时堆栈桢的结构,已经不能和现在的Fedora Core 7 with gcc 4.1.2一致了,压栈的时候依次压入函数参参数、EIP、EBP、函数内部参数,并且4bytes对齐,但是是在intel x86+FC7+gcc 4.1.2+kernel 2.6.23.17的情况下却不同,应该是gcc版本问题导致的,请问,gcc的版本与压栈流程有什么具体关系?使用gcc 的-std=选项编译了c89和c99的程序,gdb反汇编出来是一样的~~
另外,还想知道AMD 64位处理器堆栈操作是否与x86的一致,是否仅仅是64位的却别?
谢谢~~

20071222_bf2fb12861cd60c6141abQtIAKR1uKXR.gif (147.48 KB, 下载次数: 1)

下载附件

2008-08-18 10:51 上传



[ 本帖最后由 ruger 于 2008-8-18 10:55 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

风情万种。 2022-09-28 00:49:39

64的abi和32位压根不一样,参考:
http://www.x86-64.org/documentation/abi-0.99.pdf

清醇 2022-09-28 00:49:39

原帖由 albcamus 于 2008-8-18 12:40 发表
64的abi和32位压根不一样,参考:
http://www.x86-64.org/documentation/abi-0.99.pdf

多谢~~
但是32位的intel x86处理器+FC7+gcc 4.1.2+linux kernel 2.6.23还是不大明白,还想找到具体的在这套环境下压栈的过程,比如说对齐细节什么的,谢谢啦~~

巷子口的你 2022-09-28 00:49:39

原帖由 ruger 于 2008-8-18 13:32 发表

多谢~~
但是32位的intel x86处理器+FC7+gcc 4.1.2+linux kernel 2.6.23还是不大明白,还想找到具体的在这套环境下压栈的过程,比如说对齐细节什么的,谢谢啦~~

32位的ABI文档是SCO发布的,url我找不到了,上传一份:

往事随风而去 2022-09-28 00:49:39

谢谢!很有用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文