【问题标题】:Does removing relocation data using `-s` affect a position dependent executable使用 `-s` 删除重定位数据是否会影响位置相关的可执行文件
【发布时间】:2022-01-21 15:18:27
【问题描述】:

我需要知道在 GCC (g++) 中使用 -s 是否会对 PIE 产生任何影响。我还想知道它对位置相关可执行文件的影响。据我所知,不使用任何链接选项(如 -pie-fpie)会导致非 PIE,就像使用 -no-pie 时一样。现在我有一个可执行文件,这可能不是 PIE,因为我没有在链接命令中指定 -pie-s 可以引起任何问题吗?它会提高性能吗(因为 exe 会更小)?

我还检查了this question 并在答案中说:

很明显,删除重定位信息会干扰 ASLR。

但是 ASLR 只处理与位置无关的可执行文件,对吗?从位置相关的可执行文件中删除重定位数据会干扰 ASLR 吗?

【问题讨论】:

    标签: c++ gcc executable relocation aslr


    【解决方案1】:

    经过一番研究,我发现了一些可能是正确的信息。

    来自GCC Options for Linking

    -馅饼

    在支持它的目标上生成一个与位置无关的动态链接可执行文件。

    -没有馅饼

    不要生成动态链接位置无关的可执行文件。

    看这个,我的猜测是这两个选项都会产生位置无关的可执行文件,唯一的区别是前者是动态链接,而后者不是动态链接(静态链接??)。因此,在这两种情况下,可执行文件都包含重定位数据。但是,我仍然不清楚生成的可执行文件(使用-s)是否会干扰 ASLR。

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      相关资源
      最近更新 更多