2009-07-06 15 views
16

Potrzebuję móc dodać dowolną sekcję do pliku ELF. Nie mogę używać kodu GPL w tym programie, więc BFD nie wchodzi w grę. Mogę użyć libelf/gelf do odczytu sekcji, ale dokumentacja jest dość rzadka dla tych i nie mogę wymyślić, jak dodać sekcję. Czy ktoś wie, jak to zrobić? Wolałbym nie pisać własnego kodu ELF.Dodawanie sekcji do pliku ELF

Odpowiedz

17

Istnieje kilka (prawdopodobnie) powiązanych odpowiedzi w this question about ELF file headers. Przyjęta odpowiedź została podana przy użyciu objcopy, aby dodać sekcje do pliku ELF, a BSD bintools twierdzi, że ma licencję BSD na wykonanie objcopy, która może odpowiadać Twoim potrzebom.

+0

To wygląda obiecująco. Dziękuję Ci – c4757p

1

nie próbował go (jeszcze), ale może sobie spojrzeć na elf_newscn funkcji w libelf

14

Wiem, że to stare pytanie, ale znalazłem działający przykład, który pomógł mi zastosować go do mojego projektu. (W przypadku, gdy ktoś potknie się w tej kwestii)

zaczerpnięte z 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 
Powiązane problemy