如何扩展ELF二进制文件

时间:2013-03-29 11:58:48

标签: compiler-construction linker binary elf

我正在编写一个小型的仪器工具。我必须在二进制文件中插入检测例程。一个好的方法应该是将这些例程插入一个单独的代码段和一个单独的数据段,你能解释一下如何实现这个目的吗?另外,我如何修改原始文件中代码段的大小?

最好,

1 个答案:

答案 0 :(得分:1)

  

我必须在二进制文件中插入检测例程。一个好的方法应该是将这些例程插入单独的代码段和单独的数据段

什么是binary file?对可重定位(ET_REL)目标文件执行此操作与执行此操作之间存在 big 差异,而不是为完全链接的可执行文件(ET_EXEC)或共享库({{ 1}})。

  

你能解释一下如何实现这个目标吗?

对于ET_DYN,它应该是相当简单的:您读取文件标题,该标题指向节标题,告诉您ET_REL.data节的位置。然后编写一个新文件,扩展所需的部分,复制其他所有部分,并调整部分标题以反映新的部分偏移和大小。

对于.textET_DYN,问题很可能太难:您需要调整重定位表,哈希表,程序头;保持所有结构自我一致并正确对齐。