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 !!