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