-fstack-check
: Nếu hai macro tính năng STACK_CHECK_BUILTIN
và STACK_CHECK_STATIC_BUILTIN
được để ở 0 mặc định, nó chỉ chèn một byte NULL mỗi 4kb (trang) khi chồng tăng lên. Theo mặc định chỉ một, nhưng khi ngăn xếp có thể phát triển nhiều trang, đó là trường hợp nguy hiểm nhất, mỗi 4KB. linux> 2.6 chỉ có một khoảng cách trang nhỏ giữa ngăn xếp và đống, có thể dẫn đến các cuộc tấn công khoảng cách ngăn xếp, được biết đến từ năm 2005. Xem What exception is raised in C by GCC -fstack-check option để lắp ráp. Nó được kích hoạt trong gcc ít nhất kể từ 2.95.3, trong tiếng kêu kể từ 3.6.
__stack_chk_fail
là mã được chèn vào -fstack-protector
xác minh giá trị canary ngăn xếp được chèn vào có thể bị ghi đè bởi luồng tràn ngăn xếp đơn giản, ví dụ: bằng cách đệ quy.
bạn có thể xây dựng với một số ví dụ về mã và đầu ra không? –
Điều này không liên quan đến lỗi của bạn. Xem câu trả lời của tôi bên dưới – rurban