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
。