Tôi đang làm việc trên một hệ thống thời gian chạy cho các chương trình song song có thể tận dụng bố cục không gian địa chỉ chung trên nhiều quy trình, có khả năng lây lan qua một vài (nghìn) nút. Nhiều lần, phần mềm được xây dựng cho môi trường này được chạy trên các hệ thống Linux có tính năng ngẫu nhiên địa chỉ được kích hoạt theo mặc định và người dùng có thể không muốn hoặc có thể vô hiệu hóa toàn bộ hệ thống (thông qua sysctl -w kernel.randomize_va_space=0
và tương tự). Điều này áp đặt một số hạn chế đối với các chương trình song song và có thể làm tổn thương hiệu suất. Vì vậy, chúng tôi muốn tìm ra cách vô hiệu hóa nó cho các tệp nhị phân mà chúng tôi xây dựng. Bảo mật không phải là vấn đề vì phần mềm này luôn chạy trong môi trường được kiểm soát.Làm thế nào để vô hiệu hoá ngẫu nhiên không gian địa chỉ cho một nhị phân trên Linux?
tôi đã tìm thấy tài liệu tham khảo để lá cờ khác nhau và các biến, giống như ET_EXEC
, EF_AS_NO_RANDOM
(dường như không bao giờ sáp nhập?) Và PF_RANDOMIZE
, nhưng tôi không thể tìm thấy bất kỳ tài liệu mô tả những gì tôi có thể làm để thiết lập các cờ. Một câu trả lời lý tưởng sẽ cho tôi biết những gì biên dịch/assembler/linker cờ sẽ vô hiệu hóa ngẫu nhiên cho nhị phân kết quả, và những phiên bản của chuỗi công cụ/hạt nhân này hoạt động trên. Tiếp theo tốt nhất sẽ là một công cụ mà làm như vậy sau khi một nhị phân được xây dựng.
Vì tôi chắc chắn ai đó sẽ đề xuất, tôi đã biết rằng chúng tôi có thể thực hiện thay đổi này khi chạy với setarch -R
, nhưng tốt hơn là ghi lại điều này trong tệp thực thi.
Có vẻ như paxctl -rx
phải thực hiện thủ thuật, nhưng dường như không áp dụng cho phương pháp hiện tại được sử dụng trong hạt nhân không bao gồm các bản vá lỗi PaX.
Tôi sẽ điều tra và thử ngay bây giờ. – Novelocrat
Dường như đã làm việc. Cảm ơn! – Novelocrat