我想在 elf 文件中添加一个新标志。然后,该标志应该在进程描述符中可供内核使用。我的第一个想法是使用 libelf,但不幸的是,它在 Ubuntu 上似乎存在错误。Elfedit 可能是一个不错的工具,但我还没有找到适用于 Linux 的版本,尤其是 Ubuntu。
所以,我想知道是否有人可以向我建议是否有任何其他有用的工具可以将自定义标志添加到 elf 文件?
非常感谢您的帮助!
我想在 elf 文件中添加一个新标志。然后,该标志应该在进程描述符中可供内核使用。我的第一个想法是使用 libelf,但不幸的是,它在 Ubuntu 上似乎存在错误。Elfedit 可能是一个不错的工具,但我还没有找到适用于 Linux 的版本,尤其是 Ubuntu。
所以,我想知道是否有人可以向我建议是否有任何其他有用的工具可以将自定义标志添加到 elf 文件?
非常感谢您的帮助!
能够修改内核以利用新标志的人可能不会询问如何将标志添加到 ELF 库中。
那么,您打算如何让内核使用这个新标志呢?国旗的目的是什么?
由于您要添加到标准 libelf,您不能修复 Ubuntu 的错误并让他们知道您已经这样做了(让他们可以使用修复 - 尽管他们可能需要将其转发到链上) .
请查看ELFIO 库。它包含 WriteObj 和 Writer 示例。通过使用该库,您将能够创建和/或修改 ELF 二进制文件。
(虽然是老问题,但作为参考,我根据自己的经验写答案)
我建议在内存结构中读取 elf 文件,更改标志并使用您的内存结构加载进程内存。与错误纠正相比,这种方法需要更少的努力。首先,检查文件 elf.c 中的 elf、程序头、节头结构。你可以在你的结构中读取文件头,它应该有三个结构成员,分别是 elf、program、section。从 elf 标头开始读取您的结构。然后在 elf 标头中给出的偏移量上读取程序标头(迭代地用于所有程序标头)。以同样的方式,您可以通过章节标题阅读所有章节。在您自己的结构中封装 3 个标头结构也使您有机会在其他结构成员中拥有额外需要的数据。