在elf文件的notes部分修改build-id

modify build-id in the notes section of the elf file

我需要在 ELF 文件的注释部分修改一个 build-id。我看到有很多工具可以读取 elf 但不能修改它们。我找到了 elfedit,但它似乎没有满足我的需要。有可能吗?

这是readelf

的输出
$ readelf -n myelffile 
Displaying notes found in: .note.ABI-tag
  Owner                Data size        Description
  GNU                  0x00000010       NT_GNU_ABI_TAG (ABI version tag)
    OS: Linux, ABI: 3.14.0

Displaying notes found in: .note.gnu.build-id
  Owner                Data size        Description
  GNU                  0x00000014       NT_GNU_BUILD_ID (unique build ID bitstring)
    Build ID: d75a086c288c582036b0562908304bc3a8033235

我正在尝试修改 .note.gnu.build-id section

Is it even possible?

是的。这是比较容易的修改之一,因为注释中的数据完全是任意的,没有其他数据引用它。

你所要做的就是找到.note部分,依次解码每个音符,直到找到NT_GNU_BUILD_ID类型的音符,然后用same-length字节的数据覆盖它的数据你的选择。

您是否知道 linker --build-id 0x.... 选项允许您在 link 时输入您想要的任何十六进制数据?如果你可以重新link你的二进制文件,那么你就不需要修改build-id注释,因为linker会很乐意在初始link期间将你的数据放在那里.