GCC入口点地址

问题描述:

我编译一个非常基本的“Hello World”用gcc程序,使用此命令行:GCC入口点地址

gcc -m32 prog_cible.c -o prog_cible 

我很诧异的入口点地址:

readelf -h prog_cible 
... 
Entry point: 0x420 

我用这个命令关掉了alsr:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space 

我觉得这不可能是真正的切入点。 我想一个基地址被添加到0x420? 10年前,readelf给了我很好的切入点。自那之后发生了什么变

感谢

我觉得这不可能是真实的切入点。

你是对的。您的gcc可能配置为默认构建PIE二进制文件。 PIE二进制文件实际上是一种共享库的特殊形式。

如果你看一下二进制(其中readelf -h也打印)的type,你会看到,这是一个DYN,不EXEC

您可以使用gcc -m32 -no-pie ...来禁用PIE,然后您的入口点将看起来像0x8048420