我需要更改已编译的 ELF 文件中的几个变量。为了清楚地解释这一点,我将使用一个简单的 C 结构作为示例。
单个源文件被编译并从 MyFile.c 链接 (@ 0x1000) 到 MyFile.elf:
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 谢谢!
“gdb --write /your/application/binary”应该能够更改初始化数据的值并将其写回可执行文件。
添加“-batch”和“-x command_file”,您应该能够让它执行您想要的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)