Editar valores de variables en el archivo ELF?

Necesito cambiar un par de variables en un archivo ELF compilado. Tratando de explicar esto claramente, usaré una estructura en C simple como ejemplo.

El único archivo de origen se compila y vincula (@ 0x1000) a MyFile.elf desde 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
                        };

Ahora necesito una "herramienta de consola" que (sin compilar):

Escribe un nuevo número de serie a 0x1000Escribe una nueva cadena a 0x1008Actualiza la suma de comprobación en 0x1028.

No he podido encontrar una herramienta (objcopy, etc?) Que incluso haga la primera (1) tarea. Parece que este debería ser un escenario bastante común? He escrito mi propia herramienta por ahora, pero preferiría una herramienta de código abierto o similar.

Cualquier sugerencia / ideas / comentarios / críticas son muy apreciadas: D ¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta