用于简单修改elf文件的工具?

Dou*_*rie 6 c embedded

我的嵌入式项目有一个后处理步骤,用闪存的某些部分的CRC替换可执行文件中的值.此步骤只能在链接后完成,因为这是CRC图像的第一次机会.在过去,文件格式是COFF,我已经创建了一个自定义工具来进行修补.

开发工具已切换到ELF,因此我需要重新实现CRC修补程序.在我做之前,我以为我会寻找一个现有的工具来做到这一点.编译器基于GCC,但我看不到任何的组合ldnmreadelf可以做的工作.Google的搜索效果不佳.

我现在的工具用于nm查找要修补的地址,并使用地址,期望值(以防止覆盖错误的数据)和新的CRC值调用修补程序.CRC是以可执行文件的"十六进制"格式计算的(我也补丁),所以幸运的是我没有重做那部分.

我可以libelf再次使用和自定义代码实现此功能,但在此之前,它是否已经存在?

有没有更好的方法来实现我的目标,即将可执行文件的CRC放入可执行文件中,以便应用程序可以使用它?

Mat*_*ery 4

如果我理解你想要正确执行的操作,我认为以下内容会起作用:

  • nm为您提供要修补的位置的运行时虚拟地址;
  • readelf -S为您提供运行时虚拟地址和文件内每个部分开头的偏移量;
  • 将两者拼接在一起(例如,使用您最喜欢的脚本语言的几行)给出要修补的文件内的偏移量。