我正在尝试将.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 位共享对象中。
我错过了什么?