首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >终端选项卡或终端之间的ESP不同

终端选项卡或终端之间的ESP不同
EN

Stack Overflow用户
提问于 2017-12-23 04:46:43
回答 1查看 46关注 0票数 0

我已经看到ESP寄存器中的地址在终端的第一个选项卡和第二个选项卡之间不同。此外,ESP有时会在重新启动虚拟机后发生变化。ASLR和其他保护装置已关闭。这里发生了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-23 05:43:28

在Linux中,环境变量和参数位于进程条目堆栈的顶部(最高地址)。

进入_startesp指向argc,其正上方是argv[]。(通过值,而不是指向argv的指针。CRT启动代码必须通过lea eax, [esp+4]或其他方法来获取&argv[0],并将其传递给main。)

上面是envp[]。(我在http://asm.sourceforge.net/articles/startup.html中找到了一个图表。另请参阅the i386 System V ABI documentation。)

在禁用ASLR的情况下,映射为堆栈内存的区域的最高地址是固定的,但不同大小的环境将占用比初始esp大小不同的空间量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47947193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档