问题描述
我需要在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注释,因为链接器会在初始链接期间将数据愉快地放在那里。