Изменить значения переменных в файле ELF?

Мне нужно изменить пару переменных в скомпилированном файле ELF. Попытка объяснить это ясно, я буду использовать простую структуру C в качестве примера.

Один исходный файл компилируется и связывается (@ 0x1000) в MyFile.elf из 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
                        };

Теперь мне нужен «консольный инструмент», который (без компиляции):

Записывает новый серийный номер на 0x1000Записывает новую строку в 0x1008Обновляет контрольную сумму на 0x1028.

Я не смог найти инструмент (objcopy и т. Д.), Который даже выполняет первую (1) задачу. Кажется, это должен быть довольно распространенный сценарий? Я написал свой собственный инструмент, но предпочел бы инструмент с открытым исходным кодом или аналогичный.

Любые предложения / идеи / комментарии / критика высоко ценятся: D Спасибо вам !!

Ответы на вопрос(2)

Ваш ответ на вопрос