gpt4 book ai didi

linux - 在单个系统上,我可以期望 main() 始终处于相同的 EIP 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:25 26 4
gpt4 key购买 nike

我正在 Linux 中运行一些基准测试,我正在寻找程序已完成加载并开始运行的一些迹象。期望 main() 始终处于相同的 EIP 是否合理?

main()EIP 是否依赖于语言?是否依赖于编译器?

是否有任何EIP 程序总是可以预期开始的?

最佳答案

没有。在C中,入口点实际上是_start,它来自于libc_start 执行一些 libc 初始化,然后调用 main

main 只是一个常规函数。链接器可以选择在过程镜像中以任何方式重新排列它。此外,对于可执行文件开头的重定位表之类的东西,.text 部分的开头甚至可能不是常量。哎呀,如果你用汇编语言编写程序,main 可能甚至不存在。

然而,一个程序始终可以被信任从其 ELF header 中声明的入口点地址开始(假设它是一个 ELF 可执行文件)。所以,用那个。 readelf 可以告诉你这个值。

关于linux - 在单个系统上,我可以期望 main() 始终处于相同的 EIP 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com