GCC入口点地址

GCC入口点地址,gcc,elf,Gcc,Elf,我正在使用gcc编译一个非常基本的“hello world”程序,使用以下命令行: 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中添加了一个基址? 在过去,1

我正在使用gcc编译一个非常基本的“hello world”程序,使用以下命令行:

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
二进制文件<代码>饼图二进制文件实际上是共享库的一种特殊形式

如果您查看二进制文件的
类型
(也打印了
readelf-h
),您将看到它是
DYN
,而不是
EXEC

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