gpt4 book ai didi

gcc - gcc 和 ld 中与位置无关的可执行文件的 -fPIE 选项是什么?

转载 作者:行者123 更新时间:2023-12-03 05:24:09 25 4
gpt4 key购买 nike

它将如何更改代码,例如函数调用?

最佳答案

PIE支持address space layout randomization (ASLR)在可执行文件中。

在创建PIE模式之前,程序的可执行文件无法放置在内存中的随机地址,只有位置无关代码(PIC)动态库可以重定位到随机偏移量。它的工作原理与 PIC 对动态库的作用非常相似,不同之处在于不创建过程链接表 (PLT),而是使用 PC 相对重定位。

在 gcc/linkers 中启用 PIE 支持后,程序主体将作为位置无关代码进行编译和链接。动态链接器对程序模块进行完全重定位处理,就像动态库一样。全局数据的任何使用都会转换为通过全局偏移表 (GOT) 进行访问,并添加 GOT 重定位。

PIE 在 this OpenBSD PIE presentation 中有很好的描述。 .

显示功能更改 in this slide (PIE 与 PIC)。

x86 pic vs pie

Local global variables and functions are optimized in pie

External global variables and functions are same as pic

以及 this slide (PIE 与旧式链接)

x86 pie vs no-flags (fixed)

Local global variables and functions are similar to fixed

External global variables and functions are same as pic

请注意,PIE 可能与 -static 不兼容

关于gcc - gcc 和 ld 中与位置无关的可执行文件的 -fPIE 选项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com