我需要修改一个已编译的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处的校验和。
非常感谢您的任何建议 / 想法 / 评论 / 批评 :D 谢谢!!
adb
(汇编语言调试器,不是安卓桥接器)吗?在过去,我们会做类似这样的事情:echo "0x1000?W 0x11111111" | adb -w MyFile.elf
。 - Mark Plotnick