基于我在加强审计工具时所看到的,检测堆栈cookie / canaries的方法是使用readelf -s转储符号并查找__stack_chk_fail符号。
我使用-fstack-protector-strong构建我的代码,并且通常会检测到预期的canaries。问题是我构建的一些二进制文件没有__stack_chk_fail,即使使用-fstack-protector-strong选项也是如此。
是否存在二进制文件可能不包含__stack_chk_fail符号的情况/条件,即使启用了堆栈保护?