Tại sao không `dải` loại bỏ các tiêu đề phần khỏi các tệp thực thi ELF?


9

Một thực thi ELF tối thiểu chỉ yêu cầu tiêu đề ELF và ít nhất một tiêu đề chương trình để có chức năng. Tuy nhiên, khi tôi chạy dải trên một tệp thực thi ngắn, nó quyết định không ném ra bảng tiêu đề phần hoặc phần chuỗi, giữ chúng xung quanh mặc dù chúng không có mục đích (theo như tôi biết) cho việc thực hiện chương trình.

Có một lý do tại sao những cái này không bị loại bỏ bởi dải? Có tiện ích nào khác loại bỏ mọi thứ không cần thiết để thực thi để chạy không? Tôi đã thử chỉnh sửa thủ công mã thực thi golf mà tôi đang thực hiện để loại bỏ các tiêu đề của phần và nó có vẻ hoạt động tốt và nhỏ hơn nhiều.


Nó không bị tước vì có thể phá vỡ một số chương trình / thời gian chạy
mèo

Câu trả lời:


3

Tài liệu về GNU binutilsstrip ám chỉ lý do, nhưng không rõ ràng, đề cập đến trong phần mô tả về --only-keep-debugđiều đó

Lưu ý - các tiêu đề phần của các phần bị tước được giữ nguyên, bao gồm kích thước của chúng, nhưng nội dung của phần bị loại bỏ. Các tiêu đề phần được bảo toàn để các công cụ khác có thể khớp tệp debuginfo với tệp thực thi thực, ngay cả khi tệp thực thi đó đã được chuyển đến một không gian địa chỉ khác.

Đó là, trừ khi được thông báo rõ ràng thông qua -Rtùy chọn, stripsẽ giữ lại các tiêu đề phần để giúp các chương trình khác (bao gồm gdb) thực hiện công việc của họ.

Trang Sử dụng đúng lệnh dải (một phần của Kỹ thuật đảo ngược sử dụng Hệ điều hành Linux ) ghi chú

Chạy striplệnh trên một thực thi là phương pháp bảo vệ chương trình phổ biến nhất. Trong hoạt động mặc định của nó, striplệnh sẽ loại bỏ bảng ký hiệu và mọi thông tin gỡ lỗi khỏi một tệp thực thi. Đây là cách nó thường được sử dụng. Tuy nhiên, vẫn còn thông tin hữu ích không bị xóa.

và tiếp tục liệt kê một số điều hữu ích có thể bị bỏ lại - để phân tích một thực thi "bị tước".

Trong Phân tích nhị phân học Linux , điều này được nhắc lại, nhận xét rằng các tiêu đề phần thường chỉ bị thiếu khi ai đó cố tình xóa chúng và không có tiêu đề phần gdbobjdumpgần như vô dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.