是否有外部库/方法/要添加的内容
到C软件而不使用glibc / gcc(stack-protector / fortify source)内置功能?
答案 0 :(得分:1)
堆栈保护器与glibc无关;你只需提供符号__stack_chk_fail
,它将由GCC生成的金丝雀检查代码调用。 (如果您要生成与位置无关的代码,则还需要__stack_chk_fail_local
具有隐藏可见性,因此可以在不初始化GOT指针的情况下调用它。)您还需要确保canary存储可用并初始化;取决于您正在使用的体系结构/ ABI,这可能位于全局名为__stack_chk_guard
或位于线程指针的特定固定偏移处(x86上为%gs:0
)。
对于_FORTIFY_SOURCE
,您可以使用类似于glibc标头的GCC内置来重现等效项。这可以作为独立于libc头的独立层,通过GCC的#include_next
特性和包装标准头的辅助包含目录完成,而不依赖于正在使用的特定libc实现。据我所知,目前还没有这样的实现,但我们非常希望有一个用于musl libc。您可以尝试联系我们的开发团队/社区,看看是否有人有兴趣帮助您开展工作或优先开发此类标题。