2009-07-06 39 views
16

Tôi cần có thể thêm một phần tùy ý vào một tập tin ELF. Tôi không thể sử dụng mã GPL trong chương trình này, do đó, BFD không nằm trong câu hỏi. Tôi có thể sử dụng libelf/gelf để đọc các phần, nhưng tài liệu là khá thưa thớt cho những điều này, và tôi không thể tìm ra cách thêm một phần. Có ai biết làm thế nào để làm điều này? Tôi không muốn viết mã ELF của riêng mình.Thêm phần vào tập tin ELF

Trả lời

17

Có một vài câu trả lời có liên quan (có thể) trong số this question about ELF file headers. Câu trả lời được chấp nhận được đề cập sử dụng objcopy để thêm các phần vào tệp ELF và yêu cầu BSD bintools để có triển khai được cấp phép BSD là objcopy có thể phù hợp với nhu cầu của bạn.

+0

này trông đầy hứa hẹn. Cảm ơn bạn – c4757p

2

xem ELFsh, hiện là một phần của dự án ERESI http://www.eresi-project.org/ Chúng có rất nhiều tài liệu và sử dụng các công cụ tuyệt vời của chúng.

1

đã không thử nó (chưa) bản thân mình nhưng bạn có thể nhìn vào các chức năng elf_newscn trong libelf

3

Các liên kết sau có thể hữu ích:

  • Các hướng dẫn "libelf by Example" có một chương về tạo các đối tượng ELF mới.
  • elftoolchain project có các trang hướng dẫn mô tả chi tiết về API của libelf.
14

Tôi biết đây là một câu hỏi cũ nhưng tôi đã tìm thấy một ví dụ làm việc đã giúp tôi áp dụng nó cho dự án của mình. (Trong trường hợp bất cứ ai tình cờ gặp câu hỏi này)

lấy từ 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 
Các vấn đề liên quan