【发布时间】:2017-02-19 09:32:28
【问题描述】:
我使用 objcopy -o binary 创建了一个从 elf 文件创建的原始二进制文件。是否可以通过给定的偏移量重新定位它?我相信我正在寻找的效果类似于使用 --change-addresses 选项然后将其转换为二进制。
提前谢谢你
【问题讨论】:
标签: binary relocation objcopy
我使用 objcopy -o binary 创建了一个从 elf 文件创建的原始二进制文件。是否可以通过给定的偏移量重新定位它?我相信我正在寻找的效果类似于使用 --change-addresses 选项然后将其转换为二进制。
提前谢谢你
【问题讨论】:
标签: binary relocation objcopy
来自man obdjdump:
objcopy 可用于通过使用 binary 的输出目标(例如,使用 -O binary)来生成原始二进制文件。当 objcopy 生成原始二进制文件时,它本质上会
生成输入目标文件内容的内存转储。 所有符号和重定位信息都将被丢弃。内存转储将从复制到输出文件的最低部分的加载地址开始。
(我强调)
因此,除非您要导出在不同位置加载的多个部分,否则将您推送到二进制文件中的单个部分移动没有任何效果。
【讨论】:
-O binary 产生的那种二进制文件; “内存转储将从最低部分的加载地址开始”。所以如果你只有一个部分,那么无论它从哪里开始,它的开始总是二进制转储的开始。