2012-04-11 32 views
6

Chciałbym dodać pewne informacje do pliku ELF, ale najlepiej zrobić to w taki sposób, aby program mógł z łatwością odczytać te informacje bez zrozumienia ELF lub używania narzędzi spoza normalnej standardowej biblioteki językowej. Myślałem o dołączeniu tych danych do końca pliku ELF (z jakimś wskaźnikiem wskazującym początek danych, aby program czytający mógł po prostu wyszukiwać wstecz do wartownika), ale chciałem się upewnić, że tak się nie dzieje. ● Najpierw złamać specyfikację ELF. Nie jestem zainteresowany tym, czy dany program ładujący działa dobrze z takimi dołączonymi danymi; Chciałbym się dowiedzieć, czy specyfikacja ELF gwarantuje wszystko, aby wiedzieć, że różne ładowarki zgodne z ELF będą z tego zadowolone.Czy dołączanie dowolnych danych do pliku ELF narusza specyfikację ELF?

widzę, że takie pytania są zadawane przed, ale albo zakładając, że dołączanie jest ok lub bez bezpośrednich odpowiedzi:

ile mi można powiedzieć, specyfikacja ELF jest tutaj:

Nie mogłem ustalić za pomocą kilku wyszukiwań, czy żądana nieruchomość jest jednoznacznie dozwolona przez tę specyfikację.

Odpowiedz

7

Specyfikacja tak naprawdę nie mówi nic na ten temat, więc można argumentować, że "niezdefiniowane zachowanie ma końcowe dane". Z drugiej strony, specyfikacja ELF jasno określa jej oczekiwania: "sekcje i segmenty nie mają określonej kolejności. Tylko nagłówek ELF ma ustaloną pozycję w pliku. ", który daje wystarczającą ilość miejsca na osadzenie danych w ten czy inny sposób, za pomocą sekcji lub bez niej [to jest to dane bez odniesienia!].

Ta "wolność danych" jest wykorzystywana od co najmniej końca lat osiemdziesiątych; rozważ "samorozpakowujące się archiwa", w których ogólny kod rozpakowujący kod jest wypuszczany na końcową część danych.

W rzeczywistości taką niejawną funkcję można znaleźć nawet w niewykonywalnych formatach danych, takich jak RIFF i PNG. Nie wszystkie formaty umożliwiają to oczywiście; w szczególności te, w których dane są zdefiniowane jako działające do EOF, a nie dla stałej długości, przechowywane w niektórych nagłówkach. (Rozważmy ZIP: dołączanie danych nie jest możliwe, ale poprzedzenie to, co jest, co prowadzi do EXE-ZIP jest czytelny zarówno (niezmodyfikowanej) rozpakuj programy i systemów operacyjnych.)

Jest tylko jeden Wadą korzystania z takich danych bez odniesienia: podczas czytania i zapisywania pliku możesz utracić te dane.

0

Może być w porządku dodać dodatkowe dane do plików ELF (ponieważ można dodawać nowe segmenty i nowe sekcje do ELF), ale powinieneś mieć (lub ulepszyć) narzędzia do pracy nad "ulepszonymi" ELF, a także może stanowić znaczne obciążenie. I nie zapomnij bardzo dobrze udokumentować (jeśli to możliwe, w ogólnodostępnym dokumencie), co robisz.

Powiązane problemy