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

问题描述

我需要在ELF文件的notes部分中修改一个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

解决方法

有可能吗?

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

您要做的就是找到.note部分,依次解码每个音符,直到找到类型为NT_GNU_BUILD_ID的音符,然后用您选择的相同长度的字节覆盖其数据。 / p>

您是否知道链接器--build-id 0x....选项,该选项可让您在链接时放入所需的十六进制数据?如果您可以重新链接二进制文件,则无需修改build-id注释,因为链接器会在初始链接期间将数据愉快地放在那里。