Tôi đã viết một ứng dụng trong C và tôi đang cố gắng hiểu mục đích của lệnh -fno-stack-protector khi biên dịch là gì. Đối với ứng dụng cụ thể của tôi, nó làm cho không có sự khác biệt nếu tôi sử dụng lệnh này hay không trong điều khoản của bảo vệ chống lại tràn bộ đệm.Việc sử dụng -fno-stack-protector là gì?
Tôi đã đọc trực tuyến các lệnh bảo vệ -fstack và -fno-stack-protector bật và tắt tương ứng trình bảo vệ ngăn xếp ngăn xếp, nhưng nếu tôi tự biên dịch ứng dụng, thì trình bảo vệ có thể được kích hoạt trước ? Việc sử dụng lệnh có thể phụ thuộc vào hệ thống đang chạy ứng dụng nào không?
Cảm ơn
Theo mặc định, mọi thứ được biên dịch trên hệ thống có ngăn xếp ngăn xếp sẽ được liên kết với thư viện được tạo bằng ngăn xếp ngăn xếp. sẽ được biên soạn trên một hệ thống có bảo vệ ngăn xếp được bật không? – tbert
Tôi giả sử bạn đang đối phó với phần thứ hai của câu trả lời của tôi (các ý kiến về lý do tại sao nó có vấn đề) và nếu như vậy, trong trường hợp đó câu trả lời là không. Bất kỳ mã nào không có ý định chạy như là một phần của hệ sinh thái không gian người dùng của máy chủ sẽ không được liên kết với bất kỳ thư viện nào của máy chủ. (Ví dụ, một hạt nhân không được liên kết với bất kỳ thư viện không gian người dùng nào. Ví dụ khác sẽ là mã bộ nạp khởi động, các mô-đun được đọc và sử dụng như các khuôn mẫu của trình giả lập dynrec/JIT, v.v.) –
Không nói về không gian hạt nhân, nhưng không gian người dùng; Biên dịch JIT không được thực hiện với trình biên dịch C; Vì vậy, tôi phải hỏi, vấn đề với việc bật bảo vệ ngăn xếp trong userland là gì, ngoài việc có thể phải đặt "-fno-stack-protector" trong biên dịch args cho hạt nhân Linux? – tbert