【发布时间】:2017-04-09 21:18:46
【问题描述】:
我对@987654324@ 有点困惑。正如PE/COFF Specification 所说,
标题部分:数据目录
大小:可变
说明:在映像文件中找到并由操作系统使用的特殊表的地址/大小对(例如,导入表和导出表)。
还有
NumberOfRvaAndSizes:可选标头剩余部分中的数据目录条目数。每个都描述了一个位置和大小。
最后,
3.4.3。可选的标头数据目录(仅图像)
请注意,目录的数量不是固定的。在查找特定目录之前,请检查可选标题中的 NumberOfRvaAndSizes 字段。
此外,不要假定此表中的 RVA 指向节的开头,或者包含特定表的节具有特定名称。
最后一段引用了下表:
据我了解,DataDirectory 不必具有固定大小的IMAGE_NUMBEROF_DIRECTORY_ENTRIES。它应该包含NumberOfRvaAndSizes 条目。实际上这与上面的目录条目表相矛盾,其中每种类型在表中都有自己的偏移量,并且令人困惑。
所以,我的问题是:是否允许在 DataDirectory 中包含小于 IMAGE_NUMBEROF_DIRECTORY_ENTRIES 的内容,或者必须始终为该大小?
在这种情况下如何正确计算NumberOfRvaAndSizes?例如,我只有导入目录。那么NumberOfRvaAndSizes 应该是 1。但是我仍然会在 DataDirectory 中有 16 个条目,并且在索引 1 处导入条目?
对于一些误导性的标签,我们深表歉意。我添加它们是为了引起一些注意,因为指定 portable-executable 只会导致熟悉格式的人可能会错过问题
【问题讨论】:
-
is it allowed to include less- 是的。I have only import directory.- 在这种情况下你需要有NumberOfRvaAndSizes >= 2因为IMAGE_DIRECTORY_ENTRY_IMPORT==1
标签: c windows portable-executable