gpt4 book ai didi

linux - 如何随机化Linux ELF的每个段

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:51 25 4
gpt4 key购买 nike

我们知道我们可以通过将代码编译为 PIE 来随机化代码、数据/堆栈/堆。而代码和数据在每次加载时始终具有固定的偏移量。

有没有办法通过添加一些编译/链接标志来将代码/数据偏移设置为随机值?

最佳答案

ASLR随机化算法始终rounds to the page boundary ,因此没有实际能力在加载时更改它。

如果你想在编译时调整地址,可以尝试改变函数地址对齐方式(例如使用-falign-functions=...);但您会在代码中留下可用作蹦床位置的窗口。

这些偏移量是在 ELF 节数据中定义的,因此更改偏移量将涉及在这些值到达链接器之前更改这些值,例如通过修改链接脚本。

如果您传递 -Wl,-verbose,您将获得用于生成二进制文件的链接器脚本的转储,并且您可以对该脚本进行调整 - 如果您编译 pie 文件而不是常规二进制文件,情况会有所不同。

我不知道有什么方便的标志可以让您改变段的偏移量。使用 -Ttext 选项会禁用代码段的 ASLR,这与您想要的完全相反。

请注意,the linked paper似乎表明可以编写工具来执行此操作,而不会有太多困难。

Too long for a comment, and probably not the answer you're looking for.

关于linux - 如何随机化Linux ELF的每个段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28545202/

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