Editar valores de variáveis ​​no arquivo ELF?

Eu preciso alterar algumas variáveis ​​em um arquivo ELF compilado. Tentando explicar isso claramente, usarei uma estrutura C simples como exemplo.

O único arquivo de origem é compilado e vinculado (@ 0x1000) em MyFile.elf de 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
                        };

Agora eu preciso de um "console-ferramenta" que (sem compilar):

Escreve um novo número de série para 0x1000Escreve uma nova string para 0x1008Atualiza a soma de verificação em 0x1028.

Eu não fui capaz de encontrar uma ferramenta (objcopy etc?) Que ainda faz a primeira tarefa (1). Parece que este deve ser um cenário bastante comum? Eu escrevi minha própria ferramenta por enquanto, mas prefiro uma ferramenta de código aberto ou similar.

Quaisquer sugestões / ideias / comentários / críticas são muito apreciadas: D Obrigado !!

questionAnswers(2)

yourAnswerToTheQuestion