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

0

I need to modify a build-id in the notes section of the ELF file. I see there are plenty of tools to read elf but not to modify them. I found elfedit but it doesn't seem to do what I need. Is it even possible?

Here is the output of 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

I'm trying to modify .note.gnu.build-id section.

elf
asked on Stack Overflow Aug 12, 2020 by flashburn

1 Answer

1

Is it even possible?

Yes. This is one of the easier modifications, since the data in the note is completely arbitrary, and no other data refer to it.

All you have to do is find the .note section, decode each note in turn until you find the one with NT_GNU_BUILD_ID type, and overwrite its data with same-length bytes of your choosing.

Are you aware of the linker --build-id 0x.... option which allows you to put in whatever hex data you desire at link time? If you can relink your binary, then you wouldn't need to modify the build-id note, as the linker will happily put your data there during the initial link.

answered on Stack Overflow Aug 13, 2020 by Employed Russian

User contributions licensed under CC BY-SA 3.0