如何通过添加自定义部分和符号来编辑 ELF

fin*_*nks 6 c python elf

我想获取一个 elf 文件,然后根据内容添加一个包含数据的部分并添加符号。使用 objcopy --add-section 我可以添加一个包含我想要的内容的部分。我不知道如何添加符号。

无论如何,我不想运行一系列程序来完成我想做的事情,而是用 c 或 python 本地完成。在 pyelftools 中,我可以查看精灵,但我不知道如何编辑精灵。

如何在 Python 或 C 中添加自定义部分和符号?

Lui*_*ado 0

ELF 与程序存储在其中的符号无关。它只是一种对所有内容进行编码的格式。符号通常由编译器(例如 C 编译器、fortran 编译器或汇编器)生成,而节由编程语言固定(例如,C 编译器仅使用有限数量的节,具体取决于您在程序中使用的数据类型)程式)。一些编译器具有将变量与节关联的扩展,因此链接会在某种程度上认为它是特殊的。编译器/汇编器生成符号表,以便链接器能够使用它来解决依赖关系。

如果您想向程序添加符号,最简单的方法是创建一个汇编器模块,其中包含要添加到可执行文件的部分和符号,然后对其进行汇编并链接到最终的可执行文件。

了解ld(1)程序(链接器),以及它如何使用链接脚本(特殊的隐藏文件,指导链接器如何在链接时组织不同模块中的节)来处理目标文件中的节。ELF只是一种格式。如果您使用链接脚本和汇编器的帮助,您将能够添加您想要的任何部分或修改程序使用的正常内存映射。