C 使用-fPIE编译的可执行文件的强制基址

C 使用-fPIE编译的可执行文件的强制基址,c,linux,linker,aslr,C,Linux,Linker,Aslr,我带着一个有点奇怪的问题来到这里 有没有办法执行一个程序并指定它应该加载的VirtualAddress 例如: a.out是一个饼图,具有入口点0x460 b.outfork和exec的a.out,但告诉它,“嘿,我想你在0x200000加载.text部分,所以入口点是0x200460” 我查看了POSIXexec函数系列、ld.so和ld linux.so.2,但没有看到任何可以让它这样做的东西 我的直接解决办法是写我自己的链接器,但如果有什么东西可以让我已经这么做了,那会让我的生活更轻松 谢

我带着一个有点奇怪的问题来到这里

有没有办法执行一个程序并指定它应该加载的VirtualAddress

例如:

a.out
是一个饼图,具有入口点
0x460

b.out
fork
exec
a.out
,但告诉它,“嘿,我想你在
0x200000
加载
.text
部分,所以入口点是
0x200460

我查看了POSIX
exec
函数系列、
ld.so
ld linux.so.2
,但没有看到任何可以让它这样做的东西

我的直接解决办法是写我自己的链接器,但如果有什么东西可以让我已经这么做了,那会让我的生活更轻松


谢谢

您可以编写自己的加载程序:mmap图像,填充PLT,并调用入口点。是的,这就是我所想的。只是希望有一条我不知道的路。