0

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

是否依赖于语言EIPmain()它依赖于编译器吗?

有什么EIP程序总是可以预期开始的吗?

4

1 回答 1

3

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

main只是一个常规功能。链接器可以选择在过程映像中随意重新排列它。此外,对于可执行文件开头的重定位表等内容,该.text部分的开头甚至可能不是恒定的。哎呀,如果您正在汇编程序中编写程序,main甚至可能不存在。

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

于 2012-09-23T08:32:24.813 回答