如何用pyelftools保存修改后的ELF

2024-10-01 17:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我对ELF文件结构很感兴趣。在网上搜索时,我发现了一个很棒的脚本,名为pyelftools。但事实上,我不知道如何保存修改后的ELF;ELFFile类没有任何方法可以做。在

首先,我做了如下工作:

            header = self.elf.header
            self._emitline("%s" % header['e_shnum'])
            header['e_shnum'] = 30
            self._emitline("%s" % header['e_shnum'])

是啊,那可真糟糕。但遗憾的是,我不知道在ELF文件中得到e_shnum的偏移量。有人能教我吗?在

谨致问候

雷克斯。在


Tags: 文件方法self脚本结构偏移量headerelf
1条回答
网友
1楼 · 发布于 2024-10-01 17:29:25

根据作者@elibendrsky的说法,pyelftools是一个用于解析和分析ELF/DWARF文件的模块,它没有直接修改它们的方法。我查看了模块源文件,也找不到任何编辑/保存的方法。在

在这篇介绍性文章中,comments作者承认pyelftools没有API级别的支持来实现这一点,但是一些修改可以帮助您实现所需的功能。在

如果pyelftools不是硬依赖项,下面是一个如何使用elffile执行相同操作的示例:

import elffile

eo = elffile.open(name="/bin/ls")
eo.fileHeader.shnum = 30
with open('./ls.bin', 'wb') as f: f.write(eo.pack())

使用readelf,可以验证更改是否正确保存:

^{pr2}$

关于elf文件的文档不多,但是您可以查看一下源代码,找出复制pyelftools特定功能的方法。如果这不起作用,您可以尝试使用pyelftools来读取/分析任务,并使用elf文件来编辑部分和写入更改。在

相关问题 更多 >

    热门问题