我想获取一个elf文件,然后根据内容添加一个包含数据的部分,并添加符号。使用objcopy -- add -section,我可以添加包含我想要的内容的节。我想不出怎么添加符号。
无论如何,我不希望为了做我想做的事情而运行一系列程序,而是用c或python原生地运行它。在pyelftools中,我可以查看精灵,但我不知道如何编辑和精灵。
如何在Python或C中添加自定义部分和符号?
发布于 2020-01-16 14:21:52
ELF与程序存储在其中的符号无关。它只是一种对所有内容进行编码的格式。符号通常由编译器生成,如C编译器、fortran编译器或汇编程序,而节由编程语言固定(例如,C编译器仅使用有限数量的节,这取决于您在程序中使用的数据类型)。一些编译器具有将变量与节相关联的扩展,因此linke会以某种方式将其视为特殊。编译器/汇编程序生成一个符号表,以便链接器能够使用它来解析依赖项。
如果你想把符号添加到你的程序中,最简单的方法就是用你想要添加到可执行文件中的部分和符号来创建一个汇编模块,然后汇编它并链接到最终的可执行文件。
阅读ld(1)程序(链接器),以及它如何使用链接脚本(特殊的隐藏文件,指导链接器在链接时如何组织不同模块中的节)来处理目标文件中的节。ELF只是一种格式。如果您使用链接脚本和汇编程序的帮助,您将能够添加任何您想要的部分或修改程序使用的常规内存映射。
https://stackoverflow.com/questions/59717918
复制相似问题