gpt4 book ai didi

c - 如何防止二进制文件上的 LD_PRELOAD?

转载 作者:行者123 更新时间:2023-12-02 02:58:50 26 4
gpt4 key购买 nike

我用 C 代码编写二进制文件。如何防止其他用户在我的二进制文件上使用 LD_PRELOAD

使用LD_PRELOAD时,是否有任何信号可以让我处理并中断程序?

如果我静态编译二进制文件,我听说 LD_PRELOAD 将不起作用,对吗?

还有别的办法吗?

最佳答案

就像脚本有一个通过 #! 指定的解释器一样机制,可执行文件的工作原理类似。 ELF 可执行文件在程序头中有一个字段,其类型为 PT_INTERP它给出了可执行文件的“解释器”路径。该“解释器”是动态链接器,ld-linux.so 。该链接器将处理 header 并将文件映射到内存和所有其余部分。

是这个ld-linux.so实现LD_PRELOAD的加载器功能。

如果您生成此程序的自定义版本,其中支持 LD_PRELOAD被删除或禁用,然后将可执行文件的程序头指向使用该 ld-linux.so你应该能够击败LD_PRELOAD,而不是通常的“解释器”。 .

If I compile the binary statically, I heard that LD_PRELOAD will not work, right?

虽然这基本上是正确的,但 Glibc 不支持静态链接。今天,如果您想分发静态链接的可执行文件,您可以考虑使用替代的 C 库 like Musl :“musl 是从头开始设计的静态链接,小心地避免引入应用程序不会使用的大量代码或数据。”

关于c - 如何防止二进制文件上的 LD_PRELOAD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60441742/

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