Edytować wartości zmiennych w pliku ELF?

Muszę zmienić kilka zmiennych w skompilowanym pliku ELF. Próbując wyjaśnić to wyraźnie, użyję prostej struktury C jako przykładu.

Pojedynczy plik źródłowy jest kompilowany i łączony (@ 0x1000) z MyFile.elf z MyFile.c:

typedef struct {
    uint32_t SerialNumber;      /* Increments for every time it's programmed */
    uint32_t PartNumber;        /* Always the same */
    char     ProdDateTime[32];  /* "YYYY-MM-DD HH:MM:SS" date/time when programmed */
    uint32_t CalcCrc32;         /* Checksum of the above data */
} MyData_T;

const MyData_T MyData = {
    /* SerialNumber      */ 0x11111111,
    /* PartNumber        */ 0x12345678,
    /* ProdDateTime[32]  */ "2013-11-10 12:49:30",
    /* CalcCrc32         */ 0xC0CAC01A
                        };

Teraz potrzebuję „narzędzia konsoli”, które (bez kompilacji):

Zapisuje nowy numer seryjny do 0x1000Zapisuje nowy łańcuch do 0x1008Aktualizuje sumę kontrolną o 0x1028.

Nie udało mi się znaleźć narzędzia (objcopy itp.), Które nawet wykonuje pierwsze (1) zadanie. Wydaje się, że powinien to być dość powszechny scenariusz? Na razie napisałem własne narzędzie, ale wolę narzędzie open source lub podobne.

Wszelkie sugestie / pomysły / komentarze / krytyki są wysoko cenione: D Dziękuję !!

questionAnswers(2)

yourAnswerToTheQuestion