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
16
A
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.
2
spojrzeć ELFsh, która jest obecnie częścią projektu ERESI http://www.eresi-project.org/ Mają dużo dokumentacji i chłodnych zastosowań swoich narzędzi.
1
nie próbował go (jeszcze), ale może sobie spojrzeć na elf_newscn funkcji w libelf
3
Poniższe linki mogą być przydatne:
- Tutorial „libelf by Example” ma rozdział o tworzeniu nowe obiekty ELF.
- W instrukcji obsługi elftoolchain project szczegółowo opisano interfejsy API
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
To wygląda obiecująco. Dziękuję Ci – c4757p