gpt4 book ai didi

assembly - PE 二进制文件中的部分名称真的有限制吗?

转载 作者:行者123 更新时间:2023-12-01 22:57:33 26 4
gpt4 key购买 nike

一个awesome article关于PE格式说明如下:

Name. Each section header has a name field up to eight characters long, for which the first character must be a period.

但我知道有几个例子违反了这一点,从二进制文件中的 .gnu_debuglink 部分开始,它们以 DWARF 格式分离了调试符号。 DWARF 的 .debug_arranges.debug_info 和其他的也违反了这一点。 (相比之下,PDB 的“分离”部分名称只是 .debug。)

所以我想知道这篇文章是否过时/不完整,或者它可能是特定于 Windows 的指南,或者对部分名称的长度从来没有任何限制?

另外,如果有人给我指点任何关于 PE/COFF 二进制文件(ELF 也很棒)的书,我会很高兴,如果它存在的话,它比在线文章更全面。或者关于一般的系统编程——关于这个主题的信息非常稀少或者已经过时了 20 多年。 :)

最佳答案

目标文件中的段名没有限制,但可执行文件中的段名不能超过 8 个字节。来自Microsoft Portable Executable andCommon Object File Format Specification :

An 8-byte, null-padded UTF-8 encoded string. If the string is exactly 8 characters long, there is no terminating null. For longer names, this field contains a slash (/) that is followed by an ASCII representation of a decimal number that is an offset into the string table. Executable images do not use a string table and do not support section names longer than 8 characters. Long names in object files are truncated if they are emitted to an executable file.

请注意,Windows PECOFF 加载程序会忽略节的名称,因此除了作为调试信息的一种简单形式外,它们实际上并没有用于任何其他用途。

此外,名称不必以句点开头。这只是一个惯例,因此它们不会与用户定义的符号冲突。

关于assembly - PE 二进制文件中的部分名称真的有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44022429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com