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

How to create an ELF executable from process memory image

首先,英语不是我的母语。如有错误请多多包涵

如上所述,我想从进程内存映像创建一个 ELF executable。到目前为止,我成功提取了一个 ELF Header、程序 Header 和一个 Elf64_Dyn 结构列表驻留在 Dynamic 段中。我也恢复了GOT。但是,我不知道如何重建部分 headers。

问题是当 ELF executable 加载到内存中时,headers 部分未加载。如果我们在 Dynamic 段中使用 Elf64_Dyn 结构列表,我们可以获得 .rela* 段的地址、GOT 的地址、字符串 table 的地址等。但是,它不包含 .text 和 .data 等部分的地址。要重建节 headers 我们需要节的偏移量和地址,但似乎没有办法获得这些信息。

我怎样才能正确重建第 headers 部分?

感谢您的关注。

How can I reconstruct section headers properly?

你不能,但你没有 -- 部分(和部分 headers)在 运行 时不使用(至少不是动态加载器)。

您还可以 运行 strip --strip-all a.out 从 "normal" ELF 二进制文件中删除它们,它将继续 运行 就好了。