【发布时间】:2019-06-05 10:09:42
【问题描述】:
我读过的关于 ELF 标头魔法的每个资源都指出它包含 ASCII 编码的“ELF”,然后简要提到 0x7F 被添加到它前面而没有解释。
0x7F 有什么原因吗?
这是为了避免与现有格式发生冲突吗?现有标准合规性?用于检测有关磁盘或内存的内容?
【问题讨论】:
-
0x7F 有什么原因吗? 很可能是因为0x7F wasn't "claimed" yet,它是几乎所有二进制文件的一个很好的系列,也不是可打印的 ASCII 字符 (@987654322 @)。添加的
ELF(ASCII 格式)加起来是一个不错的完整 32 位或四个字节。 -
这似乎是合理的。虽然它是唯一以 0x7F 开头的签名,但少数以 0x45 ('E') 开头的签名非常奇特,似乎 ELF 文件仍然可以以 'ELF' 开头并为 32 位添加一个额外的字节。
-
32 位与 ELF 签名无关,因为 ELF 标头的前 16 个字节应该逐字节解析,因为我们还不知道文件的字节序(它被写入字节#5)。作为一个不可打印的字符也不能解释任何事情,考虑到还有一堆其他不可打印的 ASCII 字符可以同样好地完成这项工作。作为一个很好的一串 - 也无关紧要,因为 0xFF 有所有的(不仅仅是低 7 位),所以使用这种逻辑会更好。
-
我删除了我的答案。不要忘记对抱怨它的 John Bollinger 说“谢谢”:q 对其他读者:不要指望我在 Stack 上得到更多答案。我已经完成了这个网站,它是“社区”。
-
@SasQ 抱歉,我没有尽快回复您。我很感激你的回答。我正计划看看我是否可以更多地研究这个角度然后回复你,因为这似乎是一个有效的解释。
标签: linux linux-kernel elf