我正在尝试将.rela.plt共享对象的重定位表移动到文件的末尾(因为我将来要添加新的重定位条目)。
首先,我阅读了该.rela.plt部分中的所有条目。原始部分位于 offset 处0x528,.rela.dyn位于 0x600。然后我复制.rela.dyn文件末尾的内容;到偏移量0xa528。.rela.dyn我通过添加0xa000到sh_addr和sh_offset字段来更新节标题表条目。我DT_RELA用新地址更新动态表中的条目;最后我在程序头表的末尾添加了一个LOAD段(有权限)。RWX
结果,R_X86_64_RELATIVE重定位表中的条目被正确解析;但是动态链接器不会更新 GOT 中外部调用的地址,因此会导致分段错误。这不会发生在 32 位共享对象中。
我错过了什么?