2016-12-31 85 views
2

我編譯一個非常基本的「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給了我很好的切入點。自那之後發生了什麼變

感謝

回答

1

我覺得這不可能是真實的切入點。

你是對的。您的gcc可能配置爲默認構建PIE二進制文件。 PIE二進制文件實際上是一種共享庫的特殊形式。

如果你看一下二進制(其中readelf -h也打印)的type,你會看到,這是一個DYN,不EXEC

您可以使用gcc -m32 -no-pie ...來禁用PIE,然後您的入口點將看起來像0x8048420