我正在尝试使用python修改ELF文件的.text段。我成功地获取了.text字段,这样我就可以简单地更改我想要的位。问题是,pyelftools不提供任何从ELF对象生成ELF文件的方法。
因此,我尝试了以下几点:
我用c创建了一个简单的helloworld程序,对其进行了编译并获得了a.out文件。然后我使用pyelftools对它进行了反汇编。
发布于 2021-10-02 11:26:40
要更改/编辑ELF文件的任何部分,我只需使用pyelftools的ELFFile类方法来获取字段的(i) offset和(ii) size。
因此,在获得字段(A,B)的值边距后,我简单地将该文件视为普通的二进制文件。我所做的唯一一件事就是执行一个file.seek(A),将文件指针移动到我想要修改的特定部分。
def edit_elf_section(elf_object,original_file,section):
elf_section = elf_object.get_section_by_name(section)
# !! IMPORTANT !!
section_start = elf_section['sh_offset'] # NOT sh_addr. sh_addr is the logical address of the section
section_end = section_start + elf_section['sh_size']
original_file.seek(section_start)
# Write whatever you want to the file #
assert(original_file.tell() <= section_end) # You've written outside the section要验证结果,可以使用diff二进制文件查看这些文件是否相同
https://stackoverflow.com/questions/58233027
复制相似问题