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



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

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

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

如何正确重建节标题?

感谢您的考虑。

如何正确重建节标题?

你不能,但你不必- 节(和节标题(在运行时不使用(至少不是由动态加载程序使用(。

您还可以运行strip --strip-all a.out以将它们从"普通"ELF 二进制文件中删除,该二进制文件将继续正常运行。

最新更新