C 如何从进程内存映像创建ELF可执行文件

C 如何从进程内存映像创建ELF可执行文件,c,linux,memory,elf,C,Linux,Memory,Elf,首先,英语不是我的母语。如果有任何错误,请原谅 如上所述,我想从进程内存映像创建一个ELF可执行文件。到目前为止,我成功地提取了ELF头、程序头和动态段中驻留的Elf64_Dyn结构列表。我也恢复了。但是,我不知道如何重建节标题 问题是,当ELF可执行文件加载到内存中时,不会加载节头。如果我们在动态段中使用Elf64_Dyn结构列表,我们可以获得.rela*节的地址、GOT的地址、字符串表的地址等等。但是,它不包含.text和.data等节的地址。要重建节头,我们需要节的偏移量和地址,但似乎无法

首先,英语不是我的母语。如果有任何错误,请原谅

如上所述,我想从进程内存映像创建一个ELF可执行文件。到目前为止,我成功地提取了ELF头、程序头和动态段中驻留的Elf64_Dyn结构列表。我也恢复了。但是,我不知道如何重建节标题

问题是,当ELF可执行文件加载到内存中时,不会加载节头。如果我们在动态段中使用Elf64_Dyn结构列表,我们可以获得.rela*节的地址、GOT的地址、字符串表的地址等等。但是,它不包含.text和.data等节的地址。要重建节头,我们需要节的偏移量和地址,但似乎无法获得这些信息

如何正确地重建节标题

谢谢你的考虑

如何正确地重建节标题

不能,但不必——节(和节头)在运行时不使用(至少动态加载程序不使用)


您还可以运行
strip——剥离所有a.out
以从“普通”ELF二进制文件中删除它们,该二进制文件将继续正常运行。

我找到了一种重建节标题的方法。看看Ryan Oneil的(22:00)