Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IMAGE\u可选\u HEADER.DataDirectory的大小是固定的还是可变的?_C_Windows_Portable Executable - Fatal编程技术网

IMAGE\u可选\u HEADER.DataDirectory的大小是固定的还是可变的?

IMAGE\u可选\u HEADER.DataDirectory的大小是固定的还是可变的?,c,windows,portable-executable,C,Windows,Portable Executable,我对IMAGE\u OPTIONAL\u HEADER.DataDirectory有点困惑。如前所述 标题部分:数据目录 大小:变量 说明:在映像文件中找到并由操作系统使用的特殊表的地址/大小对(例如,导入表和导出表) 而且 NumberForVandSizes:可选标头其余部分中的数据目录项数。每个描述了一个位置和大小 最后 3.4.3。可选标题数据目录(仅图像) 请注意,目录的数量不是固定的。在查找特定目录之前,请检查可选标题中的NumberOfRVandSizes字段 另外,不要假设此表中

我对
IMAGE\u OPTIONAL\u HEADER.DataDirectory
有点困惑。如前所述

标题部分:数据目录

大小:变量

说明:在映像文件中找到并由操作系统使用的特殊表的地址/大小对(例如,导入表和导出表)

而且

NumberForVandSizes:可选标头其余部分中的数据目录项数。每个描述了一个位置和大小

最后

3.4.3。可选标题数据目录(仅图像)

请注意,目录的数量不是固定的。在查找特定目录之前,请检查可选标题中的NumberOfRVandSizes字段

另外,不要假设此表中的RVA指向节的开头,或者包含特定表的节具有特定名称

最后一段参考下表:

我从上面了解到,
DataDirectory
不必具有固定大小的
IMAGE\u numberoff\u DIRECTORY\u条目
。它应该包含
numberofrvandsize
条目。实际上,这与上面的目录条目表相矛盾,其中每种类型在表中都有自己的偏移量,这会造成混淆

因此,我的问题是:是否允许在
DataDirectory
中包含小于
IMAGE\u numberofu目录\u条目
,或者它必须始终是该大小

在这种情况下,如何正确计算
numberofrvandsize
?例如,我只有导入目录。然后
numberOfVandSizes
应为1。但在
DataDirectory
中仍有16个条目,在索引1处导入条目


对不起,有些标签有误导性。我添加它们是为了引起一些注意,因为指定
可移植可执行文件
只会导致熟悉该格式的人错过问题

在映像文件中找到并由操作系统使用的特殊表的地址/大小对(例如,导入表和导出表).

在映像文件中找到并由操作系统使用的特殊表的地址/大小对(例如,导入表和导出表)

是否允许在中包含少于个目录项的图像\u编号 DataDirectory或它必须始终为该大小

是的,这是允许的。NumberOfVandSize可以是任何值,包括0

在这种情况下,如何正确计算numberofrva和size

奇怪的问题。只需读取并使用它,即可计算
DataDirectory
数组中的有效条目数

例如,我只有导入目录。然后
numberofrva和size
应该是1

numberofrvandsize
必须大于您使用的最大索引。因为
IMAGE\u DIRECTORY\u ENTRY\u IMPORT==1
-
numberOfVarandSizes
必须大于1-最小值为2

并寻找代码以了解更多信息

是否允许在中包含少于个目录项的图像\u编号 DataDirectory或它必须始终为该大小

是的,这是允许的。NumberOfVandSize可以是任何值,包括0

在这种情况下,如何正确计算numberofrva和size

奇怪的问题。只需读取并使用它,即可计算
DataDirectory
数组中的有效条目数

例如,我只有导入目录。然后
numberofrva和size
应该是1

numberofrvandsize
必须大于您使用的最大索引。因为
IMAGE\u DIRECTORY\u ENTRY\u IMPORT==1
-
numberOfVarandSizes
必须大于1-最小值为2


并查找代码以了解更多信息了解此信息是否允许包含较少的代码-是
我只有导入目录。
-在这种情况下,您需要
NumberOfVandSizes>=2
,因为
图像\u目录\u条目\u导入==1
允许包含较少的
-是
我只有导入目录。
-在这种情况下,您需要
numberOfVandSizes>=2
,因为
图像\u目录\u条目\u导入==1
是有意义的。谢谢,这是有道理的。谢谢