Moje projekty osadzone mają krok postprocesowy, który zastępuje wartość w pliku wykonywalnym CRC (niektórych sekcji) lampy błyskowej. Ten krok można wykonać tylko po połączeniu, ponieważ jest to pierwsza okazja do wyświetlenia obrazu CRC. W przeszłości format pliku to COFF, a ja utworzyłem niestandardowe narzędzie do łatania.Narzędzie do prostej modyfikacji pliku elfa?
Narzędzie programistyczne zmieniło się na ELF, więc muszę ponownie wdrożyć poprawkę CRC. Zanim to zrobię, pomyślałem, że będę szukał istniejącego narzędzia, aby to zrobić. Kompilator jest oparty na gcc, ale nie widzę żadnej kombinacji ld
i nm
i readelf
, które mogą wykonać zadanie. Wyszukiwarka Google nie była owocna.
Moje obecne narzędzie używa nm
, aby znaleźć adres do zainstalowania, i wywołuje narzędzie patchera z adresem, oczekiwaną wartością (aby zapobiec zastąpieniu nieprawidłowych danych) i nową wartością CRC. CRC oblicza się w formacie "hex" pliku wykonywalnego (który również łatam), więc na szczęście nie muszę przerabiać tej części.
Mogę to zaimplementować ponownie z libelf
i niestandardowym kodem, ale zanim to zrobię, czy już istnieje?
Czy istnieje lepszy sposób osiągnięcia mojego celu umieszczenia CRC pliku wykonywalnego w pliku wykonywalnym, aby był dostępny dla aplikacji?
To świetna propozycja, +1. Dam temu szansę. –