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
是有意义的。谢谢,这是有道理的。谢谢