修改elf文件

时间:2009-04-27 12:15:22

标签: elf

我想在elf文件中添加一个新标志。然后该标志应该可用 到进程描述符中的内核。我的第一个想法是使用libelf,但不幸的是 在Ubuntu上似乎有一个bug。 Elfedit可能是一个很好的工具,但我没有找到Linux的版本,特别是Ubuntu。

所以,我想知道是否有人可以向我建议是否还有其他有用的工具 添加自定义标志到elf文件?

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:2)

能够修改内核以利用新标志的人可能不会问如何将标志添加到ELF库。

那么,你打算如何让内核使用这个新标志?国旗的目的是什么?

由于你要添加到标准的libelf中,你不能修复Ubuntu的bug并告诉他们你已经这样做了(让修复程序可用 - 尽管他们可能需要重新启动它链)。

答案 1 :(得分:1)

请查看ELFIO library。它包含WriteObj和Writer示例。通过使用该库,您将能够创建和/或修改ELF二进制文件。

答案 2 :(得分:0)

(虽然老问题,但我参考的是根据自己的经验编写答案)

我建议在内存结构中读取elf文件,更改标志并使用内存结构加载进程内存。与错误更正相比,此方法需要更少的efford。首先,检查文件elf.c for elf,program header,section headers struct。你可以在你的struct中读取文件头,它应该有elf,program,section的三个struct成员。从elf header开始读取你的struct。然后读取elf头中给出的偏移量上的程序头(迭代地为所有程序头)。同样,您可以通过节标题阅读所有部分。 在您自己的结构中封装3个头文件结构也可以让您在其他结构成员中拥有额外需要的数据。