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

问题描述 投票:1回答:1

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

[无论如何,我不希望运行一系列程序来执行我想要的操作,而是本机使用c或python来执行。在pyelftools中,我可以查看一个elf,但无法弄清楚如何编辑和elf。

如何在Python或C语言中添加自定义节和符号?

python c elf
1个回答
0
投票

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

如果要向程序中添加符号,这是使用要添加到可执行文件中的节和符号创建汇编器模块的最简单方法,然后对其进行汇编并链接到最终的可执行文件。

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

© www.soinside.com 2019 - 2024. All rights reserved.