Eksekusi ELF minimal hanya membutuhkan header ELF dan setidaknya satu header program agar berfungsi. Namun, ketika saya menjalankan strip pada executable pendek, ia memutuskan untuk tidak membuang tabel header bagian atau bagian string bagian, menjaga mereka tetap ada meskipun mereka tidak memiliki tujuan (sejauh yang saya tahu) untuk eksekusi program.
Apakah ada alasan mengapa ini tidak dihapus dengan strip? Apakah ada utilitas lain yang menghapus semua yang tidak diperlukan agar executable dapat dijalankan? Saya sudah mencoba mengedit secara manual kode-golf yang dapat dieksekusi yang saya buat untuk menghapus bagian header, dan tampaknya berfungsi dengan baik, dan jauh lebih kecil.
executable
elf
strip
Misteri
sumber
sumber
Jawaban:
Dokumentasi untuk GNU binutils
strip
menyinggung alasannya, tetapi tidak eksplisit, menyebutkan dalam uraian tentang--only-keep-debug
ituArtinya, kecuali disuruh secara eksplisit melalui
-R
opsi,strip
akan mempertahankan tajuk bagian untuk membantu program lain (termasukgdb
) melakukan pekerjaan mereka.Halaman Penggunaan yang benar dari perintah strip (bagian dari Reverse Engineering menggunakan Sistem Operasi Linux ) mencatat
dan melanjutkan untuk menyebutkan beberapa hal berguna yang mungkin tertinggal - untuk analisis yang dapat dieksekusi.
Dalam Belajar Linux Binary Analysis , ini diulangi, berkomentar bahwa header bagian biasanya hanya hilang ketika seseorang dengan sengaja menghapusnya, dan tanpa header bagian,
gdb
danobjdump
hampir tidak berguna.sumber