GNU/Linux >> Belajar Linux >  >> Linux

Menambahkan bagian ke file ELF

Saya tahu ini adalah pertanyaan lama tetapi saya menemukan contoh kerja yang membantu saya menerapkannya pada proyek saya. (Jika ada yang menemukan pertanyaan ini)

diambil dari Sourceware Mail Archiv

$ echo 'int main() { puts ("Hello world"); }' | gcc -x c - -c -o hello.o

$ echo "this is my special data" >mydata

$ objcopy --add-section .mydata=mydata \
          --set-section-flags .mydata=noload,readonly hello.o hello2.o

$ gcc hello2.o -o hello

$ ./hello
Hello world

$ objdump -sj .mydata hello

lihat ELFsh, yang sekarang menjadi bagian dari proyek ERESIhttp://www.eresi-project.org/Mereka memiliki banyak dokumentasi dan penggunaan alat mereka yang keren.


Tautan berikut mungkin berguna:

  • Tutorial "libelf by Example" memiliki bab tentang membuat objek ELF baru.
  • Proyek elftoolchain memiliki halaman manual yang menjelaskan libelf API secara mendetail.

Ada beberapa (mungkin) jawaban terkait dalam pertanyaan ini tentang header file ELF. Jawaban yang diterima disebutkan menggunakan objcopy untuk menambahkan bagian ke file ELF, dan bintools BSD mengklaim memiliki implementasi berlisensi BSD dari objcopy yang mungkin sesuai dengan kebutuhan Anda.


Linux
  1. Dasar-dasar Format File Objek ELF Linux (dan Struktur Header ELF)

  2. header file ELF

  3. Alat untuk memodifikasi bagian dinamis dari biner ELF

  1. Membaca dari file dalam perakitan

  2. glibc:file elf OS ABI tidak valid

  3. dapatkah suatu program membaca bagian elfnya sendiri?

  1. Kasus Penggunaan yang Valid Untuk Izin File "Hanya Jalankan"?

  2. Mengapa Vim menambahkan baris baru? Apakah ini konvensi?

  3. Menambahkan Kolom nilai dalam file yang dibatasi tab